home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / dndbbs.arc / DND-SRC.LBR / DNDSUB1.BAS < prev    next >
Encoding:
BASIC Source File  |  2011-01-29  |  52.7 KB  |  752 lines

  1. 10 DEFSTR A-B:DEFINT C-Z:DIM TS(12):COMMON SHARED /DNDBBS.PGM/ T2!,UX,LM,CX!,LR,RM,A,WR,CR,AL,FG,IN,TF,YE,AI,NX,CA,SW,PA1$,PA2$,E1$,Z8$,TS(),X1
  2. 20 SUB DND STATIC:Z8$="":ON ERROR GOTO 7590
  3. 30 DIM AF(21),AG(21),AE(8),AJ(5),AB(4),A2(6),AC(21),AH(21),Z8(21),ZY(21),ZX(21),A1(6),F4(6),AK(7),AQ(7),AR(10),RD(21),CC(21),AD(21),CP$(39),CS$(41),TX(21),TZ(21),CZ(21,5),CW$(21,5),CY(21),CV(21),A5(23)
  4. 40 RESTORE 45:FOR LP=1 TO 39:READ CP$(LP):NEXT:FOR LP=1 TO 41:READ CS$(LP):NEXT:FOR LP=1 TO 7:READ AQ(LP):NEXT:FOR LP=1 TO 6:READ A1(LP):NEXT:FOR LP=1 TO 7:READ AK(LP):NEXT:FOR LP=1 TO 10:READ AR(LP):NEXT:GOSUB 7400
  5. 45 DATA KILL,ATTACK,LOOK,RUN,PANIC,SEARCH,SAVE,INFORMATION,INVENTORY,SUICIDE,TRAIN,HEALTH,APPEAL,BYE,STOP,QUIT,EXPERIENCE,HELP,HIDE,CAST,LIST,BRIEF,BANK,TIME,*EDIT,*INV,*STATUS,*CALL,*SHELL,*LINK,EAT,PRAY,TOP,CASINO,LINEFEEDS,PASSWORD,MAIL,USERS,CHAT
  6. 50 DATA KILL,ATTACK,GO,USE,READ,EXAMINE,LOOK,ENTER,GET,TAKE,DROP,PUT,SELL,BREAK,SMASH,CLOSE,OPEN,DRAW,WIELD,WEAR,RETURN,CAST,BUY,LOCK,UNLOCK,PICKLOCK,FIX,REPAIR,CHARGE,HELP,DRINK,*TELEPORT,*NM,*DISCARD,*DROP,*KILL,*CALL,*EDIT,EAT,MOVE,TALK
  7. 60 DATA Fighter,Magic User,Thief,Cleric,Paladin,Ranger,Dungeon Master,Strength,Intelligence,Wisdom,Dexterity,Constitution,Piety,north,east,south,west,out,up,down,one,two,three,four,five,six,seven,eight,nine,ten
  8. 70 FG=79:HRT=5:ERT=10:RM=0:GOSUB 6750:IF C2 THEN 170
  9. 80 A="Press [ENTER] to roll your character:":CALL IO.I:CALL IO.O:A="Select your character class:":CALL IO.O:XX=6:IF LM THEN XX=7
  10. 90 FOR L=1 TO XX:A=MID$(STR$(L),2)+"> "+AQ(L):CALL IO.O:NEXT:FG=1:A="?":CALL IO.I:C2=VAL(AL):IF C2<1 OR C2>XX THEN 80
  11. 100 AM=AQ(C2):A="Enter Character Statistics, Range from 8 to 18, Average less than 13":CALL IO.O
  12. 110 F3!=0:FOR LP=1 TO 6:A=A1(LP)+">":CALL IO.I:NV=VAL(AL):IF NV<8 OR NV>18 THEN A="Invalid entry -- only numbers from 8 to 18":CALL IO.O:GOTO 100
  13. 120 F3!=F3!+NV:F4(LP)=NV:NEXT:F3!=F3!/6:IF F3!>12 THEN A="Average"+STR$(F3!)+", too high, try again..":CALL IO.O:GOTO 100
  14. 130 A="Your average is"+STR$(F3!)+", change anything? ":FG=1:CALL IO.I:IF YE THEN 100
  15. 140 CALL IO.O:GOSUB 4540:F1=F2:V1=V2:MY=M2
  16. 150 A="Level:"+STR$(LF):CALL IO.O:A="Gold: "+STR$(GG#):CALL IO.O:A="Room: "+STR$(RM):CALL IO.O:A="Exp:  "+STR$(XP#):CALL IO.O:A="Fat:  "+STR$(F1):CALL IO.O:A="Vit:  "+STR$(V1):CALL IO.O:A="Mag:  "+STR$(MY):CALL IO.O
  17. 160 GOSUB 1810:PUT 3,UX
  18. 170 GOSUB 6560:SG=1:WT=0:FOR LY=1 TO 20:IF TX(LY)<0 THEN GET 8,ABS(TX(LY)):WT=WT+VAL(W6$) ELSE IF TX(LY)=0 THEN TR=LY-1:GOTO 190
  19. 180 NEXT LY:TR=20
  20. 190 W1=0:W2=0:W3=0:W4=0:W5=0:W6=0:FOR LP=1 TO 20:CC(LP)=0:AD(LP)="":FOR LN=1 TO 5:CZ(LP,LN)=0:NEXT:NEXT:NM=0
  21. 200 CALL IO.O:A="Press [ENTER] to begin the Adventure...":CALL IO.I:CR=1:CALL IO.O:GOSUB 6540
  22. 210 IF RM>0 AND RM<=LOF(5)/470 THEN GET 5,RM:GOTO 250
  23. 220 IF RM>LOF(5)/470 AND C2=7 THEN GOSUB 6830:GOSUB 6560:IF DI THEN 210
  24. 230 IF LOF(5)/470=>TS(9)THEN A="Non-descrip:RM#"+STR$(RM):CALL IO.O:RM=TS(9):GOSUB 6560:GOTO 210
  25. 240 A="Nondescrip room file":CALL IO.O:EXIT SUB
  26. 250 IF I9 OR AB(1)=STRING$(80,32)THEN A=AP:IF LM OR C2=7 THEN AI=A:GOSUB 6780:A=AI+" |Monclass"+STR$(CVI(A6))+"|Rm"+STR$(RM):CALL IO.O:GOTO 280 ELSE CALL IO.O:GOTO 280
  27. 260 FOR LP=1 TO 4:IF AB(LP)=STRING$(80,32)THEN 280
  28. 270 A=AB(LP):CALL IO.O:NEXT
  29. 280 D9=0:IF I9 THEN A="" ELSE A="The exits are "
  30. 290 FOR L=1 TO 7:IF CVI(AE(L))THEN D9=1:A=A+AK(L)+" "
  31. 300 NEXT:IF D9 THEN CALL IO.O
  32. 310 IF I9=0 THEN A="You see ":CR=1:CALL IO.O
  33. 320 A="":SF=0:CT=0:FOR L=1 TO 10:IF AD(L)=""THEN 360
  34. 330 CT=CT+1:CR=1:CALL IO.O:IF CT=1 AND I9 THEN A="You see ":CR=1:CALL IO.O
  35. 340 IF INSTR("aeiou",LEFT$(AD(L),1))THEN A=A+"an " ELSE A=A+"a "
  36. 350 A=A+AD(L)+", ":SF=1
  37. 360 NEXT:FOR L=1 TO 20:IF CVI(AF(L))=0 THEN 500
  38. 370 IF CVI(AF(L))>0 THEN 420
  39. 380 CR=1:CALL IO.O:GET 8,ABS(CVI(AF(L))):CT=CT+1:IF CT=1 AND I9 THEN A="You see ":CR=1:CALL IO.O
  40. 390 AI=A3:GOSUB 6780:A=AI:IF VAL(ZW$)=2 THEN A=A+" [locked]"
  41. 400 IF VAL(ZW$)=1 THEN IF ZQ$="T" THEN A=A+" [closed]"
  42. 410 A=A+", ":SF=1:GOTO 500
  43. 420 GET 6,CVI(AF(L)):IF(AX="T"OR BI="T")AND C2<>7 THEN 500
  44. 430 CR=1:CALL IO.O:AI=AJ:GOSUB 6780:CT=CT+1:IF CT=1 AND I9 THEN A="You see ":CR=1:CALL IO.O
  45. 440 A=AI:IF LEFT$(S9$,4)="DOOR"THEN AI=DZ$:GOSUB 6780:A=A+" on the "+AI+" wall"
  46. 450 IF VAL(AY)>1 THEN A=A+" [locked]"
  47. 460 IF VAL(AY)=1 THEN IF AZ="T"THEN A=A+" [closed]"
  48. 470 IF AX="T"THEN A=A+" [inv]"
  49. 480 IF BI="T"THEN A=A+" [hidden]"
  50. 490 A=A+", ":SF=1
  51. 500 NEXT L:IF SF=0 THEN IF I9=0 THEN A="nothing special.." ELSE 530
  52. 510 IF SF AND A<>""THEN A$=LEFT$(A,LEN(A)-2)
  53. 520 CALL IO.O
  54. 530 DR=DR+1:IF DR<HRT THEN 590
  55. 550 DR=0:F1=F1+3:IF F1>F2 THEN F1=F2
  56. 560 MY=MY+1:IF MY>M2 THEN MY=M2
  57. 570 IF PI THEN V1=V1-2 ELSE V1=V1+2:IF V1>V2 THEN V1=V2
  58. 580 GOSUB 6560:IF PU THEN A="You feel poison running through your veins!":CALL IO.O:IF V1<0 THEN A="You finally died from his poisonous wounds!":CALL IO.O:GOTO 6350
  59. 590 IF NM THEN GOSUB 5790
  60. 600 DR2=DR2+1:IF NM THEN 620
  61. 610 IF CVI(MN$)THEN CH=CVI(MN$):GET 7,CH:NC=1:IF CVI(AB)<0 THEN 6150 ELSE 6080
  62. 620 IF DR2>ERT THEN DR2=0:IF RND>.5 AND NM<20 THEN 6050
  63. 630 IF I9 THEN A="Do?" ELSE A="Action? "
  64. 650 IF X1 THEN X3=X1:X1=0:LM=-1:ON X3 GOTO 4660,4630,3930,2620,910,3060,2130,1990,4680,6640
  65. 655 IF X3 THEN X3=0:LM=0
  66. 660 CALL IO.I:IF NX THEN TE$="":GOTO 530
  67. 670 IF LEFT$(AL,1)="*"AND C2<>7 AND LM=0 THEN A="That command is reserved for DMs only!":GOTO 520
  68. 680 GOSUB 6970:IF AL="" THEN 530
  69. 690 GOSUB 6520:IF AL="\"THEN BK=TE$ ELSE BK=AL:TE$=AL
  70. 700 IF BK=""THEN 530
  71. 710 BM=BK:MI=0:IF INSTR(BM," ")THEN BM=LEFT$(BM,INSTR(BM," ")-1)
  72. 720 SP=INSTR(BK," "):IF SP THEN 780
  73. 730 IF BK="OUT"OR BK="OU"THEN BK="O"
  74. 740 D7=INSTR("NESWOUD",BK):IF D7 THEN LS=-1:GOTO 1480
  75. 750 LN=0:FOR LS=1 TO 39:IF INSTR(CP$(LS),BM)=1 THEN IF LN THEN A="Command not unique!":GOTO 520 ELSE LN=LS
  76. 760 NEXT:IF LN=0 THEN A="I don't understand! Type help.":GOTO 520
  77. 770 LS=LN:ON LN GOTO 3100,3100,210,1690,1690,1720,1790,1840,1920,2110,4460,4830,4870,7510,7510,7510,1960,970,1090,2650,1030,940,7210,830,4670,1970,4630,6050,960,2010,1390,1410,1320,1140,1160,1170,1200,1210,1260
  78. 780 N$=MID$(BK,SP+1)
  79. 790 IF N$="NORTH"OR N$="SOUTH"OR N$="WEST"OR N$="UP"OR N$="DOWN"OR N$="OUT"THEN BK=LEFT$(N$,1):GOTO 740
  80. 800 V2$=N$:GOSUB 6810:LN=0:FOR LS=1 TO 41:IF INSTR(CS$(LS),BM)=1 THEN IF LN THEN A="Command not unique!":GOTO 520 ELSE LN=LS
  81. 810 NEXT:IF LN=0 THEN A="I don't understand! Type help.":GOTO 520
  82. 820 LS=LN:ON LN GOTO 3100,3100,1630,2820,2260,2260,2260,1630,3740,3740,3940,3940,4340,4930,4930,4970,5100,4210,4210,4240,4290,2650,5370,5230,5420,5420,3530,3590,3660,980,1590,2150,2630,3940,4700,3080,930,2170,1400,1420,1440
  83. 830 B5=RIGHT$(DATE$,2)+" "+MID$("JanFebMarAprMayJunJulAugSepOctNovDec",VAL(LEFT$(DATE$,2))*3-2,3)+" "+MID$(DATE$,4,2)+", ":LP=VAL(LEFT$(TIME$,2)):T$=MID$(" am pm",(1-(LP>12))*3-2,3):LP=LP+12*(LP>12)-12*(LP=0):T$=" "+B5+STR$(LP)+MID$(TIME$,3,3)+T$
  84. 840 A="It is now "+T$:CALL IO.O:TI!=VAL(MID$(TIME$,1,2))*3600+VAL(MID$(TIME$,4,2))*60+VAL(MID$(TIME$,7,2))
  85. 850 IF TI!=>T2!THEN T3!=TI!-T2! ELSE T3!=TI!+86400!-T2!
  86. 860 A="You have been on for":T5!=INT(T3!/60):T4!=T3!-T5!*60:IF T5!=0 THEN A=A+STR$(T4!)+" seconds.":GOTO 880
  87. 870 IF T5!>60 THEN A=A+" more than an hour." ELSE A=A+STR$(T5!)+" minutes":IF T4!THEN A=A+" and"+STR$(T4!)+" seconds." ELSE A=A+"."
  88. 880 CALL IO.O:T3!=CX!-T3!:T5!=INT(T3!/60):T4!=T3!-T5!*60:A="You have"+STR$(T5!)+" minutes":IF T4!THEN A=A+" and"+STR$(T4!)+" seconds"
  89. 890 IF LM=0 THEN A=A+" remaining":CALL IO.O
  90. 900 GOTO 630
  91. 910 IF I9 THEN A="Do?" ELSE A="Action? "
  92. 920 A=A+"*CALL":CALL IO.I:LM=0:IF NX THEN 6050
  93. 930 CH=VAL(N$):IF CH>0 AND CH<=LOF(7)/128 THEN 6080 ELSE 630
  94. 940 I9=NOT I9:IF I9 THEN A="Brief mode on" ELSE A="Brief mode off"
  95. 950 CALL IO.O:GOTO 630
  96. 960 IF LM THEN SHELL:CLS:GOSUB 6540:GOTO 530 ELSE A="I don't understand! Type help.":GOTO 520
  97. 970 BD=PA2$+"HELP1.HLP":GOSUB 6720:GOTO 630
  98. 980 IF INSTR(N$,"*")OR INSTR(N$,"?")THEN BD=PA2$+"HELP2.HLP":GOSUB 6720:GOTO 630
  99. 990 AL=LEFT$(N$,8):GOSUB 6520:FOR LP=1 TO 39:IF LEFT$(CP$(LP),8)=AL THEN 1020
  100. 1000 NEXT:FOR LP=1 TO 41:IF LEFT$(CS$(LP),8)=AL THEN 1020
  101. 1010 NEXT:A="Helpfile not found!":CALL IO.O:GOTO 630
  102. 1020 BD=PA2$+AL+".HLP":GOSUB 6720:GOTO 630
  103. 1030 IF RM<>TS(11)THEN A="Find the weapons shop..":GOTO 520
  104. 1040 A="To buy, type 'buy #' like 'buy 12'":CALL IO.O:A="###  weapon              wgt.  gold  +":CALL IO.O:IN=1:FOR LP=1 TO 36:GET 8,LP:IF LP<10 THEN A=" "+STR$(LP) ELSE A=STR$(LP)
  105. 1050 A=A+"  "+LEFT$(A3,19)+" ":LN=VAL(W6$):IF LN<10 THEN A=A+"  "+STR$(LN) ELSE IF LN<100 THEN A=A+" "+STR$(LN) ELSE A=A+STR$(LN)
  106. 1060 A=A+"   ":LN=VAL(V3$):IF LN<100 THEN A=A+" "+STR$(LN) ELSE A=A+STR$(LN)
  107. 1070 A=A+" "+STR$(ABS(VAL(W0$))):CALL IO.O:IF TF THEN IN=0:GOTO 630
  108. 1080 NEXT:IN=0:GOTO 630
  109. 1090 A="You hide in the shadows..":CALL IO.O:GQ=-1:GOTO 530
  110. 1140 IF RM=TS(12) THEN GOSUB 1800:PUT 3,UX:CALL CASINO:GOSUB 7400:GOSUB 6750:GOSUB 6560:GOTO 210
  111. 1150 A="Find the Casino first..":GOTO 520
  112. 1160 A="Turn linefeeds ON or OFF? ":CALL IO.I:GOSUB 6970:GOSUB 6520:IF AL="ON" THEN LR=0:A="Linefeeds on.":GOTO 520 ELSE LR=1:A="Linefeeds off.":GOTO 520
  113. 1170 A="Change your password[Y/N]? ":FG=1:CALL IO.I:IF YE=0 THEN A="Your password has not been changed.":GOTO 520
  114. 1180 A="Type in new password(20 char. max.)":CALL IO.O:FG=20:A="?":CALL IO.I:IF NX THEN A="Password not changed":GOTO 520
  115. 1190 GOSUB 6520:GET 3,UX:LSET PS$=AL:PUT 3,UX:A="Password changed to "+AL:GOTO 520
  116. 1200 GOSUB 1800:PUT 3,UX:CALL MAIL:GOSUB 7400:GOSUB 6750:GOSUB 6560:GOTO 210
  117. 1210 A="Hit [SPACE] to stop.":CALL IO.O:IN=1
  118. 1220 FOR SX=1 TO LOF(3)/256:GET 3,SX:IF LEFT$(AN,8)="ZZZZZNUL" OR(LM=0 AND VAL(LCK$)) THEN 1250
  119. 1230 A=AN+"Lvl:"+STR$(CVI(B4)):IF CVI(B4)>9 THEN A=A+"   " ELSE A=A+"    "
  120. 1240 A=A+A2:CALL IO.O:IF TF THEN 630
  121. 1250 NEXT:IN=0:GOTO 630
  122. 1260 A="Paging SysOp.":CALL IO.O:A="Hit [SPACE] to return to Menu.":CALL IO.O:PRINT "SYSOP HIT [ESC] TO CHAT"
  123. 1270 CA=1:SW=0:IN=1:A=CHR$(7)+".":CR=1:CALL IO.O:SOUND 32767,18:IF TF THEN IN=0:CA=0:GOTO 630
  124. 1280 IF SW=0 THEN 1270
  125. 1290 T5!=T2!:T4!=TIMER:IN=0:CALL IO.O:A="Chat Mode..":CALL IO.O
  126. 1300 T2!=TIMER:FG=32767:CALL IO.I:IF SW THEN 1300
  127. 1310 T2!=T5!+FIX(TIMER-T4!):SW=0:CA=0:CALL IO.O:GOTO 630
  128. 1320 CLOSE 1:OPEN "R",1,"SORT",4:FIELD 1,2 AS SRT1$,2 AS SRT2$:FIELD 1,4 AS SRT3$:FOR LP=1 TO 10:LSET SRT1$=MKI$(0):LSET SRT2$=MKI$(0):PUT 1,LP:NEXT
  129. 1330 LP=0:FOR SX=1 TO LOF(3)/256:GET 3,SX:IF LEFT$(AN,8)<>"ZZZZZNUL"AND VAL(LCK$)=0 AND CVI(B4)>1 THEN LP=LP+1:LSET SRT1$=B4:LSET SRT2$=MKI$(SX):PUT 1,LP
  130. 1340 NEXT:FOR LP=1 TO LOF(1)/4:FOR LN=LP+1 TO 10:GET 1,LP:L=CVI(SRT1$):AL=SRT3$:GET 1,LN:IF L<CVI(SRT1$)THEN AI=SRT3$:LSET SRT3$=AL:PUT 1,LN:GET 1,LP:LSET SRT3$=AI:PUT 1,LP
  131. 1350 NEXT:NEXT:A="Top ten users...":CALL IO.O:FOR LP=1 TO 10:GET 1,LP:LQ=CVI(SRT2$):IF LQ=0 THEN 1380
  132. 1360 GET 3,LQ:LN=CVI(B4):A=AN+" Lvl:"+STR$(LN):IF LN>9 THEN A=A+"   "+A2 ELSE A=A+"    "+A2
  133. 1370 CALL IO.O
  134. 1380 NEXT:CLOSE 1:KILL"SORT":GOTO 630
  135. 1390 A="You eat for a while...":GOTO 520
  136. 1400 A="You can't eat that!":GOTO 520
  137. 1410 A="Nothing happened..":GOTO 520
  138. 1420 GOSUB 7010:IF TE=0 THEN GOSUB 7050:IF TE=0 THEN GOSUB 7090:IF L=0 THEN A="You can't move that!":GOTO 520
  139. 1430 A="You move it around...":GOTO 520
  140. 1440 GOSUB 7090:IF L=0 THEN A="You can't talk to that!":GOTO 520
  141. 1450 GET 9,RM:IF CVI(KTR$)THEN A="As you begin to speak, ":AA="The monster hits you for ":GOSUB 6190:IF LN THEN 530
  142. 1460 IF CVI(FTR$)THEN N$=STR$(CVI(FTR$)):A="The monster teleports you elsewhere!":CALL IO.O:GOTO 2160
  143. 1470 A="The monster makes no response..":GOTO 520
  144. 1480 IF RM>0 THEN GET 5,RM
  145. 1490 Z9=CVI(AE(D7)):IF Z9=0 THEN IF C2=7 OR LM THEN GOSUB 6830:IF DI=1 THEN 210 ELSE 530 ELSE A="You can't go in that direction!":GOTO 520
  146. 1500 AI2=" follows you!"
  147. 1510 FOR LP=1 TO 20:IF CVI(AF(LP))<0 THEN GET 8,ABS(CVI(AF(LP))):IF VAL(BX)=0 THEN LSET AF(LP)=MKI$(0):LSET AG(LP)=MKI$(0)
  148. 1520 NEXT:PUT 5,RM:Z8=RM:IF Z9<1 OR Z9>LOF(5)/470 THEN Z9=RM:Z8=0
  149. 1530 RM=Z9:AL3=AD(1):FOR LP=1 TO 10:AD(LP)="":NEXT:NM=0:GET 5,RM:GOSUB 6560:GET 9,RM:HRT=3:ERT=5:IF CVI(STP$)OR CVI(MTR$)THEN 1550
  150. 1540 A="As you enter the room,":AA="You are hit for ":GOSUB 6190
  151. 1550 IF ZX(1)<0 OR RND>.5 OR AL3=""OR RM=TS(9)THEN FOR LP=1 TO 20:FOR LN=1 TO 5:CZ(LP,LN)=0:NEXT:NEXT:GOSUB 5680:GOTO 210
  152. 1560 NM=1:AD(1)=AL3
  153. 1570 A="The "+AD(1)+AI2:CALL IO.O:IF Z8 THEN GET 5,Z8:IF CVI(MN$)THEN LSET MN$=MKI$(0):PUT 5,Z8:GET 5,RM:LSET MN$=MKI$(Z8(1)):PUT 5,RM:Z8=0
  154. 1580 GOTO 210
  155. 1590 GOSUB 7050:IF TE<0 THEN 1610
  156. 1600 A="You can't drink that!":GOTO 520
  157. 1610 IF VAL(ZZ$)=0 THEN 1600
  158. 1620 GET 4,VAL(BN):IF TZ(L)<=0 THEN 1600 ELSE TZ(L)=0:MF=0:MI=VAL(A4):A="Ok":CALL IO.O:GOTO 2920
  159. 1630 GOSUB 7010:IF TE<=0 THEN GOSUB 7050:IF TE<=0 THEN A="You can't go there!":GOTO 520: ELSE LP=TX(L) ELSE LP=CVI(AF(L))
  160. 1640 GET 6,LP:IF VAL(AU)<=0 THEN A="You can't go there!":GOTO 520
  161. 1650 IF VAL(TV$)THEN A="Trapped portal!":GOTO 520
  162. 1660 IF AZ="T"THEN A="You can't, it's closed!":GOTO 520
  163. 1670 IF VAL(ZD$)THEN LSET AY="2":LSET AZ="T":PUT 6,TE
  164. 1680 NM=0:Z9=VAL(AU):GOSUB 6560:GOTO 1500
  165. 1690 D7=0:FOR L=1 TO 7:IF CVI(AE(L)) THEN D7=L:L=7
  166. 1700 NEXT:IF D7=0 THEN A="There is nowhere to run!":GOTO 520
  167. 1710 D7=L:A="You run away like a screaming madman!":CALL IO.O:GOTO 1480
  168. 1720 LN=1:FOR L=1 TO 20:IF CVI(AF(L))<=0 THEN 1770
  169. 1730 GET 6,CVI(AF(L)):IF AX<>"T"THEN 1770
  170. 1740 AI=AJ:GOSUB 6780:A="You find "+AI+" [inv]":LN=0:IF VAL(AY)>1 THEN A=A+" [locked]"
  171. 1750 IF VAL(AY)=1 AND AZ="T"THEN A=A+" [closed]"
  172. 1760 CALL IO.O
  173. 1770 NEXT:IF LN THEN A="You find nothing..":GOTO 520
  174. 1780 GOTO 530
  175. 1790 GOSUB 1800:PUT 3,UX:A="Player file updated.":GOTO 520
  176. 1800 GET 3,UX
  177. 1810 LSET AN=AO:LSET PS$=AF:LSET A2=AM:LSET A1=RIGHT$(STR$(C2),1):FOR L=1 TO 6:LSET A2(L)=MKI$(F4(L)):NEXT:LSET RO$=MKI$(RM):LSET B4=MKI$(LF):LSET A9=MKD$(XP#):LSET BT=MKD$(GG#):LSET B9=MKI$(F1):LSET BC=MKI$(F2)
  178. 1820 LSET V4$=MKI$(V1):LSET V5$=MKI$(V2):LSET BR=MKI$(MY):LSET BP=MKI$(M2):LSET BZ=STR$(PI):LSET BH=STR$(I4):LSET LR$=STR$(LR):IF AC<>DATE$ THEN GOSUB 7190
  179. 1830 LSET AD=MKD$(Z1#):LSET AC=DATE$:LSET B1=RIGHT$(STR$(C8),1):FOR LP=1 TO 20:LSET AC(LP)=MKI$(TX(LP)):LSET AH(LP)=MKI$(TZ(LP)):NEXT:RETURN
  180. 1840 A="Information: "+AO:CALL IO.O:A="You are a level":IF LF>10 THEN A=A+STR$(LF) ELSE A=A+" "+AR(LF)
  181. 1850 A=A+" "+AM:CALL IO.O:A=STR$(F1)+"/"+MID$(STR$(F2),2):IF W3 OR W1 THEN A=A+"(+"+MID$(STR$(W3+W1),2)+")"
  182. 1860 A=A+" Fat"+STR$(V1)+"/"+MID$(STR$(V2),2)+" Vit"+STR$(MY)+"/"+MID$(STR$(M2),2)+" Mag":CALL IO.O:FOR L=1 TO 6:A=LEFT$(A1(L),3)+STR$(F4(L)):IF L=1 THEN IF W2 THEN A=A+"(+"+MID$(STR$(W2),2)+")"
  183. 1870 A=A+" ":CR=1:CALL IO.O:NEXT:CALL IO.O:IF PI THEN A="You are dying from poison!":CALL IO.O
  184. 1880 IF I4 THEN A="You are invisible!":CALL IO.O
  185. 1890 IF W1 THEN GET 8,ABS(TX(W4)):A="You are wearing "+A3:CALL IO.O
  186. 1900 A="":IF W2 OR W3 THEN A="You are holding ":IF W2 THEN GET 8,ABS(TX(W6)):AI=A+A3:GOSUB 6780:A=AI
  187. 1910 IF W3 THEN GET 8,ABS(TX(W5)):IF W2 THEN A=A+" and "+A3:CALL IO.O ELSE A="You are holding "+A3:CALL IO.O ELSE IF W2 THEN CALL IO.O
  188. 1920 A="You are carrying"+STR$(WT)+" lbs. of treasure.":CALL IO.O:CM=0:FOR L=1 TO TR:LP=TX(L):IF LP>0 THEN GET 6,LP:AI=AJ ELSE IF LP<0 THEN GET 8,ABS(LP):AI=A3 ELSE 1950
  189. 1930 GOSUB 6780:CM=1:IF L>1 THEN A=", ":CR=1:CALL IO.O
  190. 1940 A=AI:CR=1:CALL IO.O
  191. 1950 NEXT:IF CM THEN CALL IO.O
  192. 1960 A="You have"+STR$(GG#)+" gold.":CALL IO.O:A="You need"+STR$(XP#)+" experience points to reach the next level.":GOTO 520
  193. 1970 I4=NOT I4:IF I4 THEN A="You are invisible!" ELSE A="You are no longer invisible!
  194. 1980 GOTO 520
  195. 1990 LM=0:I4=NOT I4:IF I4 THEN A="You are invisible!" ELSE A="You are no longer invisible!
  196. 2000 GOTO 520
  197. 2010 A="[R]emove/[A]dd a link?":CALL IO.I:GOSUB 6520:AL=LEFT$(AL,1):LP=1:IF AL="A"THEN LP=2 ELSE IF AL<>"R"THEN 530
  198. 2020 A="Rm# to link?":CALL IO.I:IF NX THEN 530
  199. 2030 LN=VAL(AL):IF LN<1 OR LN>LOF(5)/470 THEN 530
  200. 2040 A="Which direction?":CALL IO.I:IF NX THEN 530
  201. 2050 GOSUB 6520:D5=INSTR("NESWOUD",AL):IF D5=0 THEN 530
  202. 2060 IF LP=1 THEN GET 5,LN:LSET AE(D5)=MKI$(0):PUT 5,LN:A="Ok":GOTO 520
  203. 2070 A="Link to Rm#?":CALL IO.I:NV=VAL(AL):LP=NV:IF LP<1 OR LP>LOF(5)/470 THEN 530
  204. 2080 GET 5,LN:LSET AE(D5)=MKI$(LP):PUT 5,LN:A="Room linked":CALL IO.O:IF D5=5 THEN 530 ELSE A="Link back?":CALL IO.I:IF YE=0 THEN 530
  205. 2090 IF D1=5 THEN D8=3 ELSE IF D5=2 THEN D8=4 ELSE IF D5=3 THEN D8=1 ELSE IF D5=4 THEN D8=2 ELSE IF D5=6 THEN D8=7 ELSE IF D5=7 THEN D8=6
  206. 2100 GET 5,LP:LSET AE(D8)=MKI$(LN):PUT 5,LP:A="Ok":GOTO 520
  207. 2110 A="Are you sure you want to commit suicide?":CALL IO.I:IF YE=0 THEN 530
  208. 2120 GET 3,UX:FOR LP=1 TO 20:LSET AC(LP)=MKI$(0):LSET AH(LP)=MKI$(0):NEXT:C2=0:GOSUB 1800:PUT 3,UX:GOTO 7530
  209. 2130 IF I9 THEN A="Do?" ELSE A="Action? "
  210. 2140 A=A+"*TELE ":CALL IO.I:LM=0:N$=AL
  211. 2150 A="A dark cloud passes overhead...":CALL IO.O:A="   A bolt of lightning strikes...":CALL IO.O:A="      The cloud disappears...":CALL IO.O
  212. 2160 Z9=VAL(N$):GOSUB 6560:AI2=" teleports with you!":GOTO 1510
  213. 2170 AL=N$:NV=VAL(AL):LN=NV:IF LN<1 OR LN>LOF(5)/470 THEN 530
  214. 2180 GET 5,LN:A="Short Description:"+AP:CALL IO.O:A="New Description?":CALL IO.I:GOSUB 6970:IF AL<>""THEN LSET AP=AL:PUT 5,LN
  215. 2190 IF AB(1)=STRING$(80,32)THEN A="No Long Description to Edit.":GOTO 520
  216. 2200 FOR CO=1 TO 4:IF AB(CO)<>STRING$(80,32)THEN AI=AB(CO):GOSUB 6780:A5(CO)=AI:A=AI:CALL IO.O:NEXT
  217. 2210 CO=CO-1:A="String to replace?":CALL IO.I:IF NX THEN 530
  218. 2220 RE$=AL:A="Replacement?":CALL IO.I:FL=0:FOR LP=1 TO CO:IF INSTR(A5(LP),RE$) THEN IF LEN(A5(LP))-LEN(RE$)+LEN(AL)>79 THEN A="Line overflow.":GOTO 520
  219. 2230 IF INSTR(A5(LP),RE$)THEN A5(LP)=LEFT$(A5(LP),INSTR(A5(LP),RE$)-1)+AL+MID$(A5(LP),INSTR(A5(LP),RE$)+LEN(RE$)):FL=FL+1
  220. 2240 NEXT:IF FL THEN A=MID$(STR$(FL),2)+" string(s) replaced." ELSE A="No Change."
  221. 2250 CALL IO.O:FOR LP=1 TO CO:LSET AB(LP)=A5(LP):NEXT:PUT 5,LN:GOTO 530
  222. 2260 LN=-1:GOSUB 7010:IF TE THEN A="It's ":GOTO 2400
  223. 2270 IF S6 THEN S6=S6-CM:IF S6<0 THEN S6=0
  224. 2280 GOSUB 7050:IF TE THEN A="You are carrying ":LN=0:GOTO 2400
  225. 2290 GOSUB 7090:IF L=0 THEN A="I cannot examine that!":GOTO 520
  226. 2300 A="It's ":IF INSTR("aeiou",LEFT$(AD(L),1))THEN A=A+"an " ELSE A=A+"a "
  227. 2310 LP=ZX(L):IF ZX(L)<0 THEN LP=15
  228. 2320 A=A+AD(L)+" (level"+STR$((LP-1)*2+1)+" to"+STR$(LP*2)+")":CALL IO.O
  229. 2330 A="It has"+STR$(RD(L))+" hits and"+STR$(ZY(L))+" experience":CALL IO.O
  230. 2340 A="It carries the following treasure":CALL IO.O:LN=1:FOR LP=1 TO 5:IF CZ(L,LP)<=0 THEN 2360
  231. 2350 A=CW$(L,LP):CALL IO.O:LN=0
  232. 2360 NEXT:IF LN THEN A="Nothing at all..":CALL IO.O
  233. 2370 IF CV(L)THEN A="It can poison":CALL IO.O
  234. 2380 IF CY(L)THEN A="It can drain levels":CALL IO.O
  235. 2390 GOTO 530
  236. 2400 IF TE>0 THEN 2560
  237. 2410 IF VAL(S7$)THEN GET 4,VAL(BN):AL=B2:GOSUB 6530:A=AL:CALL IO.O:A="It disintegrated!":CALL IO.O:IF LN THEN LSET AF(L)=MKI$(0):LSET AG(L)=MKI$(0):PUT 5,RM:GOTO 530 ELSE SP=0:PB=-1:LS=34:GOSUB 3960:PB=0:LS=0:GOTO 530
  238. 2420 AI=A3:GOSUB 6780:A=A+AI:IF VAL(KE$)THEN A=A+" (#"+MID$(STR$(VAL(KE$)),2)+")"
  239. 2430 IF VAL(W0$)THEN A=A+"(+"+MID$(STR$(ABS(VAL(W0$))),2)+")"
  240. 2440 IF VAL(BN)THEN GET 4,VAL(BN):A=A+"("+MID$(STR$(VAL(PQ$)),2)+")"
  241. 2450 CALL IO.O:A="It is worth"+STR$(VAL(V3$))+" gold peices":CALL IO.O:A="It weighs"+STR$(VAL(W6$))+" lbs.":CALL IO.O:IF VAL(BX)=0 THEN 2530
  242. 2460 IF VAL(ZW$)=2 THEN A="It is locked.":GOTO 520
  243. 2470 IF ZQ$="T"THEN A="It is closed.":GOTO 520
  244. 2480 GOSUB 7180:CM=0:A="It contains the following treasure..":CALL IO.O:A="":FOR L=1 TO LOF(1)/34:GET 1,L:LP=CVI(BB):IF LP=0 THEN 2510
  245. 2490 CR=1:CALL IO.O:IF LP<0 THEN GET 8,ABS(LP):AI=A3 ELSE GET 6,LP:AI=AJ
  246. 2500 GOSUB 6780:A=AI+", ":CM=1
  247. 2510 NEXT:IF CM=0 THEN A="Nothing at all.." ELSE A=LEFT$(A,LEN(A)-2)
  248. 2520 GOTO 520
  249. 2530 IF VAL(BN)THEN GET 4,VAL(BN):A="It's magical power is "+SQ$:CALL IO.O
  250. 2540 IF VAL(BN)OR VAL(W0$)THEN IF TN<=0 THEN A="It's broken/discharged.":CALL IO.O ELSE A="It has"+STR$(TN)+" strikes/charges.":CALL IO.O
  251. 2550 GOTO 530
  252. 2560 AI=AJ:GOSUB 6780:A=A+AI:IF LEFT$(S9$,4)="DOOR"THEN AI=DZ$:GOSUB 6780:A=A+" on the "+AI+" wall"
  253. 2570 IF ZX$="T"THEN A=A+" [inv]"
  254. 2580 IF VAL(AY)>1 THEN A=A+" [locked]"
  255. 2590 IF VAL(AY)=1 THEN IF AZ="T"THEN A=A+" [closed]"
  256. 2600 CALL IO.O:IF VAL(A7)THEN A="It requires key number"+STR$(VAL(A7)):CALL IO.O
  257. 2610 A=BV:GOTO 520
  258. 2620 A=A+"*NM ":CALL IO.I:GOSUB 6520:N$=AL
  259. 2630 IF VAL(N$)>=0 AND VAL(N$)<=NM THEN NM=VAL(N$)
  260. 2640 A="# of Monsters ="+STR$(NM):CALL IO.O:FOR L=NM+1 TO 10:AD(L)="":NEXT:GOTO 530
  261. 2650 TE=0:IF SP=0 THEN 2680
  262. 2660 GOSUB 7050:IF TE=0 THEN GOSUB 7090:IF MN<=0 THEN A="Improper spell target!":GOTO 520
  263. 2670 IF C2<>7 AND C2<>2 THEN IF TE=0 THEN A="You can't do that!":GOTO 520
  264. 2680 IF MY<1 THEN A="You have no more power!":GOTO 520
  265. 2690 FG=79:A="Chant? ":CALL IO.I:GOSUB 6520:LP=0:FOR LN=1 TO LOF(4)/128:GET 4,LN:IF AL+STRING$(80-LEN(AL),32)=B2 THEN LP=LN:LN=LOF(4)/128
  266. 2700 NEXT:IF LP=0 THEN A="You mispronounced the spell chant!":GOTO 520
  267. 2710 GET 9,RM:IF CVI(STP$)<>LP THEN 2730
  268. 2720 A="As you cast the spell,":AA="You are hit for":GOSUB 6190:IF LN THEN 530
  269. 2730 MI=VAL(A4):IF MI=3 THEN A="You cast a bliss spell!":CALL IO.O:A="Nothing happened!":GOTO 520
  270. 2740 IF TE THEN MF=10
  271. 2750 MF=VAL(PQ$):IF MF>LF THEN A="You are not high enough level to cast the spell!":GOTO 520
  272. 2760 MY=MY-MF:IF MY<0 THEN MY=0
  273. 2770 GOSUB 6520:IF TE THEN IF MI<>1 THEN A="Improper spell chant!":GOTO 520 ELSE IF VAL(BN)=0 THEN A="Improper spell chant!":GOTO 520
  274. 2780 IF MI=4 OR MI=1 OR MI=6 OR MI=7 OR MI=8 THEN 2910
  275. 2790 IF C2<>7 AND C2<>2 THEN A="You can't cast that spell!":GOTO 520
  276. 2800 IF MI=10 THEN A="You cast a teleport spell!":CALL IO.O:GOTO 3010
  277. 2810 MF=MF+LF:AI=SQ$:GOSUB 6780:GOSUB 6530:AA=AI:GOTO 3100
  278. 2820 MI=0:GOSUB 6790:IF TE>=0 OR VAL(ZZ$)THEN A="You can't use that!":GOTO 520
  279. 2830 IF VAL(BN)=0 THEN A="That has no apparent magical power!":GOTO 520
  280. 2840 IF MY<1 THEN A="You have no more power!":GOTO 520
  281. 2850 IF TZ(L)<=0 THEN TZ(L)=0:A="You can't, it's discharged!":GOTO 520
  282. 2860 GET 4,VAL(BN):MI=VAL(A4):MF=VAL(PQ$):IF MF>LF THEN A="You are not high enough level to cast the spell!":GOTO 520
  283. 2870 GET 9,RM:IF CVI(STP$)=VAL(BN)THEN A="The device explodes!":AA="You are hit for":LQ=L:GOSUB 6190:IF LN THEN L=LQ:SP=0:PB=-1:LS=34:GOSUB 3960:LS=0:PB=0:GOTO 530
  284. 2880 TZ(L)=TZ(L)-1:MY=MY-MF:IF MY<0 THEN MY=0
  285. 2890 IF SP THEN N$=V2$:GOSUB 6810:GOSUB 7050:IF TE THEN MF=10
  286. 2900 GOSUB 6560
  287. 2910 AA=SQ$:IF MI=1 OR MI=6 OR MI=7 OR MI=8 OR MI=10 THEN GOSUB 6450
  288. 2920 IF MI=6 THEN F1=F2:A="You now have"+STR$(F1)+" fatigue!":CALL IO.O:GOSUB 6560
  289. 2930 IF MI=7 THEN V1=V2:A="You now have"+STR$(F1)+" vitality!":CALL IO.O:GOSUB 6560
  290. 2940 IF MI=8 THEN IF PI THEN A="The poison disappeared!":CALL IO.O:PI=0
  291. 2950 IF MI=4 THEN A="The Gods thunder..":CALL IO.O:A="What do you wish for?":CALL IO.I:N$=AL:GOSUB 6810:GOSUB 4700:GOTO 530
  292. 2960 IF MI<>1 THEN 3010
  293. 2970 IF TE AND MF=10 THEN 2980 ELSE 3000
  294. 2980 IF C2=2 OR C2=7 THEN GET 4,VAL(BN):IF VAL(A4)<>4 THEN TZ(L)=VAL(WA$):A="You recharge it!":GOTO 520
  295. 2990 A="Nothing happened..":GOTO 520
  296. 3000 MY=M2:A="You now have"+STR$(MY)+" magic points!":CALL IO.O:GOSUB 6560
  297. 3010 IF TE AND VAL(S7$)THEN A="The scroll disintegrated!":CALL IO.O:SP=0:PB=-1:LS=34:GOSUB 3960:LS=0:PB=0 ELSE 3030
  298. 3020 IF MI=3 THEN F4(6)=F4(6)+1:IF F4(6)>25 THEN F4(6)=25:GOTO 2990 ELSE A="You feel a magical glow about you!":GOTO 520
  299. 3030 IF MI=1 OR MI=6 OR MI=7 OR MI=8 THEN 530
  300. 3040 IF MI<>10 THEN 3100
  301. 3050 Z9=VAL(TG$):AI2=" teleports with you!":GOTO 1510
  302. 3060 IF I9 THEN A="Do?" ELSE A="Action? "
  303. 3070 A=A+"*KILL ":CALL IO.I:LM=0:GOSUB 6520:N$=AL
  304. 3080 GOSUB 7090:IF MN<=0 THEN 530
  305. 3090 A="Evil laughter sounds from above...":CALL IO.O:A="   A bolt of lightning strikes...":CALL IO.O:GOTO 3370
  306. 3100 FOR L=1 TO 20:IF CVI(AF(L))<=0 THEN 3120 ELSE GET 6,CVI(AF(L))
  307. 3110 AI=S9$:GOSUB 6780:IF LEFT$(AI,LEN(N$))=N$AND VAL(TV$)=-1 THEN A="You were just thrown in jail!":CALL IO.O:Z9=TS(8):GOSUB 6560:GOTO 1500
  308. 3120 NEXT:GOSUB 7090:IF MN<=0 THEN IF MI>0 THEN MY=MY+MF:GOSUB 6560:A="Improper spell target!":GOTO 520 ELSE A="That's not here!":GOTO 520
  309. 3130 IF F1<1 THEN A="You are too exhausted to do that!":GOTO 520
  310. 3140 IF CC(MN)=0 THEN A="You were just thrown in jail!":CALL IO.O:Z9=TS(8):GOSUB 6560:GOTO 1500
  311. 3150 IF CC(MN)<0 AND MI<=0 THEN A="A magical force stops you from striking.":GOTO 520
  312. 3160 GQ=0:IF CC(MN)=0 THEN CC(MN)=1
  313. 3170 IF MI THEN GOSUB 6450:GOTO 3210
  314. 3180 IF W2=0 THEN 3210
  315. 3190 TZ(W6)=TZ(W6)-1:IF TZ(W6)>0 THEN 3210
  316. 3200 TZ(W6)=0:SP=0:PB=-1:GET 8,ABS(TX(W6)):AI=SH$:GOSUB 6780:AL=AI:GOSUB 6530:A="Your "+AL+" breaks in half!":CALL IO.O:L=W6:GOSUB 3960:PB=0:GOTO 530
  317. 3210 IF INT(RND*20+1)<F4(4)THEN IF MI THEN 3330 ELSE GOSUB 6460:GOTO 3330
  318. 3220 IF RND>.85 OR MI THEN 3230 ELSE 3320
  319. 3230 LP=INT(RND*3+1):IF RND>.5 THEN 3280
  320. 3240 IF LP=1 THEN A="missed!"
  321. 3250 IF LP=2 THEN A="hit a wall!"
  322. 3260 IF LP=3 THEN A="slipped!"
  323. 3270 A="You "+A:GOTO 520
  324. 3280 IF LP=1 THEN A=" stepped aside!"
  325. 3290 IF LP=2 THEN A=" jumped away!"
  326. 3300 IF LP=3 THEN A=" slipped by!"
  327. 3310 A="The "+AD(MN)+A:GOTO 520
  328. 3320 GOSUB 5690:N$=TH$:A="You missed the "+AD(MN)+"!":CALL IO.O:PB=0:GOTO 530
  329. 3330 LP=(INT(RND*F4(1)+LF/2))*XX+W2:A="You hit the "+AD(MN)+" for"+STR$(LP)
  330. 3340 IF LP=1 THEN A=A+" hit.." ELSE A=A+" hits!"
  331. 3350 CALL IO.O:IF RD(MN)-LP>0 AND LP>RD(MN)*.95 THEN A="The "+AD(MN)+" fless from your attack!":CALL IO.O:LP=INT(ZY(MN)/2):XP#=XP#-LP:A="You earn"+STR$(LP)+" experience!":CALL IO.O:GOTO 3490
  332. 3360 RD(MN)=RD(MN)-LP:IF RD(MN)>0 THEN 530
  333. 3370 IF X3 THEN A="Something " ELSE A="You "
  334. 3380 LS=0:A=A+"just killed the "+AD(MN)+"!":CALL IO.O:XP#=XP#-ZY(MN)
  335. 3390 IF XP#<0 THEN XP#=0
  336. 3400 A="On it you find":CR=1:CALL IO.O:GET 5,RM:LP=0:FOR L=1 TO 5:TT=CZ(MN,L):IF TT<=0 THEN 3460
  337. 3410 AI=CW$(MN,L):GOSUB 6780:FOR LN=1 TO 20:IF CVI(AF(LN))=0 THEN 3440
  338. 3420 NEXT:IF L=1 THEN A=" " ELSE A=""
  339. 3430 A=A+AI+", but it rolled away..":CALL IO.O:GOTO 3480
  340. 3440 AL=AI:IF LP=0 THEN LP=1:CALL IO.O
  341. 3450 GET 8,TT:LSET AG(LN)=MKI$(VAL(WA$)):LSET AF(LN)=MKI$(-TT):A=AL:CALL IO.O
  342. 3460 NEXT:IF LP=0 THEN A=" nothing..":CALL IO.O
  343. 3470 IF CVI(MN$)THEN LSET MN$=MKI$(0)
  344. 3480 PUT 5,RM
  345. 3490 FOR L=1 TO NM:IF L<MN THEN 3510
  346. 3500 Z8(L)=Z8(L+1):AD(L)=AD(L+1):RD(L)=RD(L+1):CC(L)=CC(L+1):ZY(L)=ZY(L+1):ZX(L)=ZX(L+1):FOR LP=1 TO 5:CZ(L,LP)=CZ(L+1,LP):CW$(L,LP)=CW$(L+1,LP):NEXT:CV(L)=CV(L+1):CY(L)=CY(L+1)
  347. 3510 NEXT:NM=NM-1:IF NM<0 THEN NM=0
  348. 3520 GOTO 530
  349. 3530 GOSUB 7050:IF TE=0 OR VAL(BN)THEN A="You can't fix that!":GOTO 520
  350. 3540 IF TZ(L)>0 THEN A="That's not broken!":GOTO 520
  351. 3550 IF F4(3)<10 THEN A="You aren't wise enough!":GOTO 520
  352. 3560 IF ABS(VAL(W0$))>15 THEN A="You aren't skilled enough!":GOTO 520
  353. 3570 IF RND>.5 THEN A="You didn't fix it!":GOTO 520
  354. 3580 TZ(L)=VAL(WA$):A="You fix it!":GOTO 520
  355. 3590 IF RM<>TS(11)THEN A="Find the Weapons Shop..":GOTO 520
  356. 3600 GOSUB 7050:IF TE=0 THEN A="You can't repair that!":GOTO 520
  357. 3610 IF TZ(L)>0 THEN A="That isn't broken!":GOTO 520
  358. 3620 IF VAL(BN)THEN A="The Weapons Master says: "+CHR$(34)+"Can't fix that here!"+CHR$(34):GOTO 520
  359. 3630 F3!=INT(VAL(V3$)*.5):IF T3!>GG# THEN A="You don't have enough Gold!":GOTO 520
  360. 3640 A="The Weapons Master asks: "+CHR$(34)+"How about"+STR$(F3!)+" Gold?"+CHR$(34):CALL IO.I:IF YE THEN GG#=GG#-F3!:A="There, it's repaired..":CALL IO.O:TZ(L)=VAL(WA$):GOTO 530
  361. 3650 A="The Weapons Master says: "+CHR$(34)+"You must go away then.."+CHR$(34):GOTO 520
  362. 3660 IF RM<>TS(2)THEN A="Find the Mages Guild..":GOTO 520
  363. 3670 GOSUB 7050:IF TE=0 THEN A="That can't be recharged here!":GOTO 520
  364. 3680 IF VAL(BN)=0 THEN A="The Master Wizard says: "+CHR$(34)+"You can't do that here!"+CHR$(34):GOTO 520
  365. 3690 IF TZ(L)>0 THEN A="That's not discharged!":GOTO 520
  366. 3700 GET 4,VAL(BN):IF VAL(A4)=4 THEN A="The Master Wizard says: "+CHR$(34)+"That can't be recharged here!"+CHR$(34):GOTO 520
  367. 3710 F3!=VAL(V3$):IF F3!>GG#THEN A="You don't have enough Gold!":GOTO 520
  368. 3720 A="The Master Wizard says: "+CHR$(34)+"How about"+STR$(F3!)+" Gold?"+CHR$(34):CALL IO.I:IF YE THEN GG#=GG#-F3!:A="The Master Wizard chants an invocation..":TZ(L)=VAL(WA$):GOTO 520
  369. 3730 A="The Master Wizard says: "+CHR$(34)+"You must leave here then.."+CHR$(34):GOTO 520
  370. 3740 S2=INSTR(V2$," "):IF S2=0 THEN 3770
  371. 3750 IF S2 THEN N$=MID$(V2$,S2+1):V2$=LEFT$(V2$,S2-1)
  372. 3760 GOSUB 6810:GOSUB 7050:IF TE THEN 3790 ELSE IF S6 THEN S6=S6-CM
  373. 3770 GOSUB 7010:IF TE THEN 3790
  374. 3780 A="You can't get that!":GOTO 520
  375. 3790 IF TR=20 THEN A="You can't carry any more!":GOTO 520
  376. 3800 IF S2=0 THEN 3860
  377. 3810 IF VAL(BX)=0 THEN 3780
  378. 3820 IF VAL(ZW$)=2 THEN A="You can't, it's locked!":GOTO 520
  379. 3830 IF ZQ$="T"THEN A="You can't, it's closed!":GOTO 520
  380. 3840 GOSUB 7180:N$=V2$:GOSUB 6810:TE=0:CM=0:TN=0:FOR L=1 TO LOF(1)/34:GET 1,L:AL=RH$:GOSUB 6520:IF LEFT$(AL,LEN(N$))=N$THEN TE=CVI(BB):CM=CM+1:IF S6=0 OR CM=S6 THEN TN=CVI(BA):GOTO 3860
  381. 3850 NEXT:GOTO 3780
  382. 3860 IF TE<0 THEN GET 8,ABS(TE):A=A3 ELSE GET 6,TE:A=AJ:IF TE>0 THEN IF BL="T"AND C2<>7 THEN 3780 ELSE 3880
  383. 3870 IF TE<0 THEN IF WT+VAL(W6$)>F4(1)*100 THEN A="You can't carry any more!":GOTO 520
  384. 3880 IF I9 THEN A="Ok" ELSE A="You take "+A
  385. 3890 CALL IO.O:IF QM$="1"AND TE<0 THEN GG#=GG#+VAL(V3$):A="You now have"+STR$(GG#)+" Gold!":CALL IO.O:GOTO 3910
  386. 3900 TR=TR+1:TX(TR)=TE:TZ(TR)=TN:IF TE<0 THEN WT=WT+VAL(W6$)
  387. 3910 IF S2=0 THEN LSET AF(L)=MKI$(0):PUT 5,RM: ELSE LSET BA=MKI$(0):LSET BB=MKI$(0):LSET RH$="":PUT 1,L:CLOSE 1
  388. 3920 GOTO 530
  389. 3930 SP=0:A=A+"*DIS ":CALL IO.I:GOSUB 6520:N$=AL:LS=34:GOSUB 7050:LS=0:GOTO 3950
  390. 3940 GOSUB 6790
  391. 3950 IF TE=0 THEN IF PB=0 THEN A="You can't drop that!":GOTO 520 ELSE RETURN
  392. 3960 LP=TZ(L):LN=TX(L):LQ=L:AL="":IF SP=0 THEN 4070
  393. 3970 TN=LP:N$=V2$:GOSUB 6810:LP=TN:GOSUB 7010:IF TE THEN 4000
  394. 3980 IF S6 THEN S6=S6-CM
  395. 3990 GOSUB 7050
  396. 4000 IF TE=0 OR VAL(BX)=0 THEN A="You can't drop it there!":GOTO 520
  397. 4010 IF VAL(ZW$)=2 THEN A="You can't, it's locked!":GOTO 520
  398. 4020 IF ZQ$="T"THEN A="You can't, it's closed!":GOTO 520
  399. 4030 GOSUB 7180:LA=0:FOR L=1 TO LOF(1)/34:GET 1,L:IF CVI(BB)=0 THEN LA=L:L=LOF(1)/34
  400. 4040 NEXT:IF LA>VAL(F5$)THEN A="You can't, it's full!":GOTO 520
  401. 4050 LSET BA=MKI$(LP):LSET BB=MKI$(LN):AL=" in "+A3:IF LN<0 THEN GET 8,ABS(LN):A=SH$ ELSE GET 6,LN:A=S9$
  402. 4060 LSET RH$=A:PUT 1,L:CLOSE 1
  403. 4070 L=LQ:IF L=W6 THEN W2=0:W6=0
  404. 4080 IF L=W5 THEN W3=0:W5=0
  405. 4090 IF L=W4 THEN W1=0:W4=0
  406. 4100 IF L<W6 THEN W6=W6-1
  407. 4110 IF L<W5 THEN W5=W5-1
  408. 4120 IF L<W4 THEN W4=W4-1
  409. 4130 FOR TE=L TO TR-1:TX(TE)=TX(TE+1):TZ(TE)=TZ(TE+1):NEXT:TX(TR)=0:TZ(TR)=0:TR=TR-1:IF TR<0 THEN TR=0:WT=0
  410. 4140 IF LN<0 THEN GET 8,ABS(LN):WT=WT-VAL(W6$):A=A3 ELSE GET 6,LN:A=AJ
  411. 4150 IF PB=0 THEN IF I9 THEN A="Ok":CALL IO.O ELSE AI="You drop "+A:GOSUB 6780:A=AI+AL:CALL IO.O
  412. 4160 IF WT<0 THEN WT=0
  413. 4170 IF SP THEN 530
  414. 4180 IF LS=34 THEN IF PB=0 THEN A="It was discarded..":GOTO 520 ELSE RETURN
  415. 4190 FOR LQ=1 TO 20:IF CVI(AF(LQ))=0 THEN LSET AF(LQ)=MKI$(LN):LSET AG(LQ)=MKI$(LP):PUT 5,RM ELSE NEXT:LA=1:IF PB=0 THEN A="It rolled away..":CALL IO.O
  416. 4200 IF PB THEN RETURN ELSE 530
  417. 4210 GOSUB 7050:IF TE=0 THEN A="You aren't carrying that!":GOTO 520
  418. 4220 IF VAL(W0$)>0 THEN IF TZ(L)<=0 THEN A="You can't, it's broken!":GOTO 520 ELSE W2=VAL(W0$):W6=L:A="Ok":GOTO 520
  419. 4230 A="You can't wield that!":GOTO 520
  420. 4240 GOSUB 7050:IF TE=0 THEN A="You aren't carrying that!":GOTO 520
  421. 4250 IF VAL(W0$)=>0 THEN A="You can't wear that!":GOTO 520
  422. 4260 IF TZ(L)<=0 THEN A="You can't, it's broken!":GOTO 520
  423. 4270 IF VAL(RB$)<0 THEN W3=ABS(VAL(W0$)):W5=L ELSE W1=ABS(VAL(W0$)):W4=L
  424. 4280 A="Ok":GOTO 520
  425. 4290 GOSUB 7050:IF TE=0 THEN A="You aren't carrying that!":GOTO 520
  426. 4300 IF L=W5 THEN W5=0:W3=0:GOTO 4330
  427. 4310 IF L=W4 THEN W4=0:W1=0:GOTO 4330
  428. 4320 IF L=W6 THEN W6=0:W2=0 ELSE A="You can't do that!":GOTO 520
  429. 4330 A="Ok":GOTO 520
  430. 4340 IF RM<>TS(10)THEN A="Find the Pawn Shop..":GOTO 520
  431. 4350 GOSUB 7050:IF TE=0 THEN A="You can't sell that!":GOTO 520
  432. 4360 IF TX(L)>0 THEN A="The Fence takes it!":CALL IO.O:GOTO 4450
  433. 4370 IF VAL(BX)=0 THEN 4390 ELSE IF VAL(ZW$)<2 THEN 4390
  434. 4380 A="The Fence fumbles with it a bit..":CALL IO.O:A="And says: "+CHR$(34)+"Arrghh!! Can't open the damn thing!"+CHR$(34):GOTO 520
  435. 4390 IF(TZ(L)<=0 AND(VAL(W0$)OR VAL(BN)))THEN LX!=1 ELSE LX!=VAL(V3$)
  436. 4400 AI=SH$:GOSUB 6780:AL=AI:GOSUB 6530:AI=AL:GOSUB 6530:A="The Fence says: "+CHR$(34)+"Well, I'll give you":LN=0:IF VAL(BX)=0 THEN 4430
  437. 4410 LX!=0:LN=1:GOSUB 7180:FOR L=1 TO LOF(1)/34:GET 1,L:LP=CVI(BB):IF LP<0 THEN GET 8,ABS(LP):LX!=LX!+VAL(V3$)
  438. 4420 NEXT:AI="contents of the "+AI
  439. 4430 A=A+STR$(LX!)+" Gold peices for the "+AI+"."+CHR$(34):CALL IO.O:A="Well??":CALL IO.I:GOSUB 6520:IF YE THEN GG#=GG#+LX!:A="Ok, fine with me then..":CALL IO.O ELSE A="Tough luck for you then!":GOTO 520
  440. 4440 IF LN THEN FOR L=1 TO LOF(1)/34:LSET BA=MKI$(0):LSET BB=MKI$(0):LSET RH$="":PUT 1,L:NEXT:GOTO 530
  441. 4450 SP=0:LS=34:PB=-1:GOSUB 3960:LS=0:PB=0:GOTO 530
  442. 4460 IF TS(C2)<>RM THEN A="You can't train here!":GOTO 520
  443. 4470 IF XP#>0 THEN A="You don't have enough experience to train!":GOTO 520
  444. 4480 IF GG#<2^(LF+6)THEN A="You don't have enough Gold to train!":GOTO 520
  445. 4490 XX=INT(RND*6+1):F4(XX)=F4(XX)+1:IF LF<6 THEN F4(6)=F4(6)+1
  446. 4500 GG#=GG#-(2^(LF+6)):LF=LF+1:GOSUB 4550:XP#=2^(LF+7):IF C2=7 THEN 4530
  447. 4510 FOR LP=1 TO 6:IF F4(LP)>25 THEN F4(LP)=25
  448. 4520 NEXT
  449. 4530 GOSUB 6560:A="After many weeks of training and meditation...":CALL IO.O:GOTO 1840
  450. 4540 RM=TS(9):LF=1:XP#=128:GG#=200
  451. 4550 ON C2 GOTO 4560,4570,4580,4590,4600,4610,4620
  452. 4560 V2=6*LF:F2=12*LF:M2=4*LF:RETURN
  453. 4570 V2=4*LF:F2=9*LF:M2=10*LF:RETURN
  454. 4580 V2=5*LF:F2=10*LF:M2=3*LF:RETURN
  455. 4590 V2=5*LF:F2=9*LF:M2=6*LF:RETURN
  456. 4600 V2=6*LF:F2=11*LF:M2=5*LF:RETURN
  457. 4610 V2=6*LF:F2=11*LF:M2=4*LF:RETURN
  458. 4620 V2=250*LF:F2=250*LF:M2=250*LF:RETURN
  459. 4630 A="You are in room number"+STR$(RM):CALL IO.O
  460. 4640 A="There are"+STR$(LOF(5)/470)+" rooms":CALL IO.O
  461. 4650 A="The monster level of this room is"+STR$(CVI(A6)):GOTO 520
  462. 4660 LM=0:A="You are being edited..":CALL IO.O:LM=-1
  463. 4670 GOSUB 1800:PUT 3,UX:CALL EDITOR:GOSUB 7400:GOSUB 6750:GOSUB 6540:GOTO 210
  464. 4680 IF I9 THEN A="Do?" ELSE A="Action? "
  465. 4690 A=A+"*DROP ":LM=-1:CALL IO.I:LM=0:N$=AL:GOSUB 6810
  466. 4700 AL=N$:GOSUB 6530:L4=0:FOR L2=1 TO LOF(8)/128:GET 8,L2:IF AL=LEFT$(A3,LEN(AL))THEN TE=L2:L4=L4+1:IF L4=S6 THEN L4=L2:GOTO 4780
  467. 4710 NEXT:LP=L4:IF S6 THEN S6=S6-L4
  468. 4720 L4=0:IF C2<>7 THEN 4750
  469. 4730 FOR L2=1 TO LOF(6)/128:GET 6,L2:IF AL=LEFT$(AJ,LEN(AL))THEN TE=L2:L4=L4+1:IF L4=S6 THEN L4=-L2:GOTO 4800
  470. 4740 NEXT
  471. 4750 IF L4=0 AND LP=0 THEN A="I can't find that..":GOTO 520
  472. 4760 IF L4=1 AND LP=0 THEN L4=-TE:GOTO 4800
  473. 4770 IF L4=0 AND LP=1 THEN L4=TE ELSE A="I have"+STR$(L4+LP)+" of those":CALL IO.O:A="Specify NAME#X (ex:a sword#12)":GOTO 520
  474. 4780 GET 8,L4:IF VAL(BX)AND C2<>7 THEN A="I can't drop that!":GOTO 520
  475. 4790 IF VAL(BN) THEN GET 4,VAL(BN):IF VAL(A4)=4 AND C2<>7 THEN A="I can't drop that!":GOTO 520
  476. 4800 LA=0:FOR O1=1 TO 20:IF CVI(AF(O1))=0 THEN LA=O1:O1=20
  477. 4810 NEXT:IF LA=0 THEN A="I can't drop anything, the room is full!":GOTO 520
  478. 4820 GET 5,RM:LSET AG(LA)=MKI$(VAL(WA$)):LSET AF(LA)=MKI$(-L4):PUT 5,RM:GOTO 530
  479. 4830 A="You are a level":IF LF>10 THEN A=A+STR$(LF) ELSE A=A+" "+AR(LF)
  480. 4840 A=A+" "+AM:CALL IO.O:A=STR$(F1)+"/"+MID$(STR$(F2),2):IF W3 OR W1 THEN A=A+"(+"+MID$(STR$(W3+W1),2)+")"
  481. 4850 A=A+" Fat "+STR$(V1)+"/"+MID$(STR$(V2),2)+" Vit "+STR$(MY)+"/"+MID$(STR$(M2),2):CALL IO.O:FOR L=1 TO 6:A=LEFT$(A1(L),3)+STR$(F4(L)):IF L=1 THEN IF W2 THEN A=A+"(+"+MID$(STR$(W2),2)+")"
  482. 4860 A=A+" ":CR=1:CALL IO.O:NEXT:GOTO 520
  483. 4870 IF F1<F2/4 THEN A="The Gods teleport you elsewhere..":CALL IO.O:GOTO 4920
  484. 4880 FOR L=1 TO 7:IF CVI(AE(L))THEN 4920
  485. 4890 NEXT:FOR L=1 TO 20:IF CVI(AF(L))>0 THEN GET 6,CVI(AF(L)):IF VAL(AU)>0 THEN 4920
  486. 4900 NEXT:A="You're right, there doesn't seem to be any way out..":CALL IO.O
  487. 4910 Z9=TS(9):NM=0:GOSUB 6560:GOTO 1500
  488. 4920 A="The Gods laugh at your attempt for divine restitution..":GOTO 520
  489. 4930 GOSUB 5660:IF L>20 OR BI="T"OR VAL(AU)<=0 OR VAL(A7)THEN A="You can't do that!":GOTO 520
  490. 4940 IF VAL(AY)=1 THEN A="It's already open!":GOTO 520
  491. 4950 IF F4(2)<INT(RND*6)+10 OR F4(1)<INT(RND*8)+10 OR RND>.5 THEN A="You didn't smash it open!":GOTO 520
  492. 4960 LSET AY="1":PUT 6,CVI(AF(L)):A="You smash it open!":GOTO 520
  493. 4970 GOSUB 5660:IF L<21 THEN 5040
  494. 4980 GOSUB 7010:IF TE<0 THEN 5000 ELSE IF S6 THEN S6=S6-CM:IF S6<0 THEN S6=0
  495. 4990 GOSUB 7050:IF TE>=0 THEN 5070
  496. 5000 IF VAL(BX)=0 THEN 5070
  497. 5010 IF VAL(ZW$)<>1 THEN 5070
  498. 5020 IF ZQ$="T"THEN 5080
  499. 5030 LSET ZQ$="T":PUT 8,ABS(TE):GOTO 5090
  500. 5040 IF VAL(AY)<>1 THEN 5070
  501. 5050 IF AZ="T"THEN 5080
  502. 5060 LSET AZ="T":PUT 6,CVI(AF(L)):GOTO 5090
  503. 5070 A="You can't close that!":GOTO 520
  504. 5080 A="It's already closed!":GOTO 520
  505. 5090 A="You close it!":GOTO 520
  506. 5100 GOSUB 5660:IF L<21 THEN 5170
  507. 5110 GOSUB 7010:IF TE<0 THEN 5130 ELSE IF S6 THEN S6=S6-CM:IF S6<0 THEN S6=0
  508. 5120 GOSUB 7050:IF TE>=0 THEN 5200
  509. 5130 IF VAL(BX)=0 THEN 5200
  510. 5140 IF VAL(ZW$)<>1 THEN 5200
  511. 5150 IF ZQ$="F"THEN 5210
  512. 5160 LSET ZQ$="F":PUT 8,ABS(TE):GOTO 5220
  513. 5170 IF VAL(AY)<>1 THEN 5200
  514. 5180 IF AZ="F"THEN 5210
  515. 5190 LSET AZ="F":PUT 6,CVI(AF(L)):GOTO 5220
  516. 5200 A="You can't open that!":GOTO 520
  517. 5210 A="It's already open!":GOTO 520
  518. 5220 A="You open it!":GOTO 520
  519. 5230 GOSUB 5660:IF L<21 THEN 5300
  520. 5240 GOSUB 7010:IF TE<0 THEN 5260 ELSE S6=S6-CM:IF S6<0 THEN S6=0
  521. 5250 GOSUB 7050:IF TE>=0 THEN 5340
  522. 5260 IF VAL(BX)=0 THEN 5340
  523. 5270 IF VAL(ZW$)=2 THEN 5350
  524. 5280 IF VAL(ZW$)=0 THEN IF LM=0 OR C2<>7 THEN 5340
  525. 5290 GET 8,ABS(TE):LSET ZW$="2":LSET ZQ$="T":PUT 8,ABS(TE):GOTO 5360
  526. 5300 IF VAL(AU)<=0 THEN 5340
  527. 5310 IF VAL(AY)=2 THEN 5350
  528. 5320 IF VAL(AY)=0 THEN IF LM=0 OR C2<>7 THEN 5340
  529. 5330 LSET AY="2":LSET AZ="T":PUT 6,CVI(AF(L)):GOTO 5360
  530. 5340 A="You can't lock that!":GOTO 520
  531. 5350 A="It's already locked!":GOTO 520
  532. 5360 A="You lock it!":GOTO 520
  533. 5370 IF RM<>TS(11)THEN A="Find the Weapons Shop..":GOTO 520
  534. 5380 AL=N$:LP=VAL(AL):IF LP<1 OR LP>36 THEN A="You can't buy that!":GOTO 520
  535. 5390 GET 8,LP:IF GG#-VAL(V3$)<0 THEN A="You don't have enough Gold!":GOTO 520
  536. 5400 IF TR=20 OR WT+VAL(W6$)>F4(1)*100 THEN A="You can't carry any more!":GOTO 520
  537. 5410 TR=TR+1:TX(TR)=-LP:TZ(TR)=VAL(WA$):GG#=GG#-VAL(V3$):WT=WT+VAL(W6$):A="Ok":GOTO 520
  538. 5420 GOSUB 5660:IF L<21 THEN 5510
  539. 5430 GOSUB 7010:IF TE<0 THEN 5450 ELSE S6=S6-CM:IF S6<0 THEN S6=0
  540. 5440 GOSUB 7050:IF TE>=0 THEN 5630
  541. 5450 IF VAL(BX)=0 THEN 5630
  542. 5460 IF VAL(ZW$)=0 THEN IF LM=0 OR C2<>7 THEN 5630
  543. 5470 IF VAL(ZW$)=1 THEN 5640
  544. 5480 LN=VAL(KE$):FOR LP=1 TO TR:IF TX(LP)<0 THEN GET 8,ABS(TX(LP)):IF VAL(KE$)=LN THEN 5500
  545. 5490 NEXT:GOTO 5650
  546. 5500 GET 8,ABS(TE):LSET ZW$="1":LSET ZQ$="T":PUT 8,ABS(TE):GOTO 5620
  547. 5510 IF VAL(AU)<=0 OR VAL(AY)=0 THEN 5630
  548. 5520 IF VAL(AY)=1 THEN 5640
  549. 5530 IF VAL(A7)=0 THEN 5610
  550. 5540 IF LS<>25 THEN 5570
  551. 5550 FOR LP=1 TO TR:IF TX(LP)<0 THEN GET 8,ABS(TX(LP)):IF VAL(A7)=VAL(KE$)THEN 5610
  552. 5560 NEXT:GOTO 5650
  553. 5570 IF C2<>3 AND C2<>7 THEN A="You can't do that!":GOTO 520
  554. 5580 IF F4(1)<10 THEN A="You aren't strong enough!":GOTO 520
  555. 5590 IF F4(2)<10 THEN A="You don't have the intelligence!":GOTO 520
  556. 5600 IF F4(2)<INT(RND*6)+9 OR F4(1)<INT(RND*8)+9 OR RND>.5 THEN A="You didn't unlock it!":GOTO 520
  557. 5610 LSET AY="1":LSET AZ="T":PUT 6,CVI(AF(L))
  558. 5620 A="You unlock it!":GOTO 520
  559. 5630 A="You can't do that!":GOTO 520
  560. 5640 A="It's already unlocked!":GOTO 520
  561. 5650 A="You don't have the key!":GOTO 520
  562. 5660 CM=0:GET 5,RM:FOR L=1 TO 20:IF CVI(AF(L))>0 THEN GET 6,CVI(AF(L)):AL=S9$:N$=LEFT$(N$,3):GOSUB 6520:IF LEFT$(AL,LEN(N$))=N$THEN CM=CM+1:IF S6=0 OR CM=S6 THEN RETURN
  563. 5670 NEXT:RETURN
  564. 5680 IF CVI(PTR$)=0 OR W2=0 OR W3=0 THEN RETURN
  565. 5690 LP=INT(RND*4+1):IF LP=1 THEN A="You fumbled!"
  566. 5700 IF LP=2 THEN A="You stumbled!"
  567. 5710 IF LP=3 THEN A="You tripped!"
  568. 5720 IF LP=4 THEN A="You fell!"
  569. 5730 CR=1:CALL IO.O:PB=0:TH$=N$:IF W3 THEN SP=0:PB=-1:GET 8,ABS(TX(W5)):AI=SH$:GOSUB 6780:AL=AI:GOSUB 6530:IF W2 THEN A=" and "+AL ELSE A=" You dropped your "+AL+"!" ELSE A=""
  570. 5740 IF W2 THEN SP=0:PB=-1:GET 8,ABS(TX(W6)):AI=SH$:GOSUB 6780:AL=AI:GOSUB 6530:A=" You dropped your "+AL+A+"!"
  571. 5750 CALL IO.O:LA=0:IF PB AND W3 THEN L=W5:GOSUB 3960
  572. 5760 IF PB AND W2 THEN L=W6:GOSUB 3960
  573. 5770 IF LA THEN A="It rolled away..":CALL IO.O
  574. 5780 PB=0:RETURN
  575. 5790 FOR L=1 TO NM:IF GQ OR CC(L)<=0 THEN 6040
  576. 5800 XX=ABS(ZX(L))+1
  577. 5810 IF XX>10 THEN CC(L)=CC(L)+1:IF CC(L)>3 THEN CC(L)=1:IF RD(L)+INT(RD(L)*.1)<32767 THEN RD(L)=RD(L)+INT(RD(L)*.1)
  578. 5820 IF CY(L)=0 THEN 5880
  579. 5830 LF=LF-1:A="You've been drained a level!":CALL IO.O:XP#=2^(LF+6):IF LF=0 THEN LF=1:AA="You now become a "+AD(L)+"!":GOTO 6400
  580. 5840 F2=0:V2=0:M2=0:GOSUB 4550:IF F1>F2 THEN F1=F2
  581. 5850 IF V1>V2 THEN V1=V2
  582. 5860 IF MY>M2 THEN MY=M2
  583. 5870 GOSUB 6560
  584. 5880 IF CV(L)THEN IF PI=0 THEN PI=-1:A="The "+AD(L)+" casts a poison spell!":CALL IO.O:A="You've been poisoned!":CALL IO.O:GOTO 6040
  585. 5890 IF INT(RND*25+1)>F4(2)/2 THEN 5940
  586. 5900 LP=INT(RND*3+1):IF LP=1 THEN A=" missed!"
  587. 5910 IF LP=2 THEN A=" hit itself!"
  588. 5920 IF LP=3 THEN A=" struck a wall!"
  589. 5930 A="The "+AD(L)+A:CALL IO.O:GOTO 6040
  590. 5940 LP=INT(RND*RD(L)/18-(W3+W1)*.5)*XX:IF LP<1 THEN 6040
  591. 5950 IF I4 THEN A="Your invisibility protects you!":CALL IO.O:RETURN
  592. 5960 A="The "+AD(L)+" attacks you!":CALL IO.O:FY=F1:VY=V1:FY=FY-LP:A="The "+AD(L)+" hits you for":IF FY>=0 THEN A=A+STR$(LP)+" fat!" ELSE EX=ABS(FY):FY=0:A=A+STR$(LP-EX)+" fat and"+STR$(EX)+" vit!":VY=VY-EX:IF VY<=0 THEN VY=0:CALL IO.O:GOTO 6330
  593. 5970 CALL IO.O:IF W3=0 THEN 6000
  594. 5980 TZ(W5)=TZ(W5)-1:IF TZ(W5)>0 THEN 6000
  595. 5990 TZ(W5)=0:SP=0:PB=-1:GET 8,ABS(TX(W5)):AI=SH$:GOSUB 6780:AL=AI:GOSUB 6530:A="Your "+AL+" breaks in half!":CALL IO.O:L=W5:GOSUB 3960:PB=0
  596. 6000 IF W1=0 THEN 6030
  597. 6010 TZ(W4)=TZ(W4)-1:IF TZ(W4)>0 THEN 6030
  598. 6020 TZ(W4)=0:SP=0:PB=-1:GET 8,ABS(TX(W4)):AI=SH$:GOSUB 6780:AL=AI:GOSUB 6530:A="Your "+AI+" crumbles!":CALL IO.O:L=W4:GOSUB 3960:PB=0
  599. 6030 F1=FY:V1=VY:GOSUB 6560
  600. 6040 NEXT:RETURN
  601. 6050 GET 5,RM:IF CVI(A6)=0 OR CVI(MN$)THEN 630
  602. 6060 CH=(CVI(A6)-1)*19+INT(RND*8+1)+INT(RND*12+1)+2
  603. 6070 IF CH>LOF(7)/128 THEN 630
  604. 6080 GET 7,CH:NC=INT(RND*CVI(BF))+1:IF NC>10 THEN NC=10
  605. 6090 WHILE NC+NM>20:NC=NC-1:WEND:IF NC<=0 THEN 630
  606. 6100 IF NC>1 THEN AI=PL$:A=AR(NC)+" " ELSE AI=BS:IF INSTR("aeiou",LEFT$(AI,1))THEN A="an " ELSE A="a "
  607. 6110 GOSUB 6780:A=A+AI:F3!=RND:IF F3!>.95 THEN IF NC>1 THEN A=A+" attack you!":GOTO 6140 ELSE A=A+" attacks you!":GOTO 6140
  608. 6120 IF F3!>.9 THEN IF NC>1 THEN A=A+" suddenly appear!":GOTO 6140 ELSE A=A+" suddenly appears!":GOTO 6140
  609. 6130 IF F3!>.85 THEN A="You are approached by "+A+"!" ELSE A="You encounter "+A+"!"
  610. 6140 UC1=ASC(MID$(A,1,1)):MID$(A$,1,1)=CHR$(UC1+32*(UC1>96 AND UC1<123)):CALL IO.O
  611. 6150 AI=BS:GOSUB 6780:FOR L=NM+1 TO NM+NC:AD(L)=AI:NEXT:FOR L=NM+1 TO NM+NC:RD(L)=CVI(BG):ZY(L)=CVI(A8):ZX(L)=CVI(AB):CV(L)=VAL(PP$):CY(L)=VAL(B6):Z8(L)=CH:CC(L)=CVI(AB)
  612. 6160 FOR LP=1 TO 5:IF CVI(AJ(LP))>0 AND RND<.9 THEN CZ(L,LP)=CVI(AJ(LP)):GET 8,CZ(L,LP):AI=A3:GOSUB 6780:CW$(L,LP)=AI
  613. 6170 NEXT:NEXT:NM=NM+NC:GET 9,RM:IF CVI(MTR$)<>CH THEN 630
  614. 6180 A="As you step forward,":AA="The monster hits you for":GOSUB 6190:GOTO 630
  615. 6190 LN=0:IF CVI(ETR$)THEN ERT=CVI(ETR$)
  616. 6200 IF CVI(HTR$)THEN HRT=CVI(HTR$)
  617. 6210 LP=CVI(TTR$):IF LP>0 THEN LN=1:FY=F1:VY=V1:FY=FY-LP:IF FY>=0 THEN CALL IO.O:A=AA+STR$(LP)+" fat!":F1=FY ELSE EX=ABS(FY):A=AA+STR$(F1)+" fat and "+STR$(EX)+" vit!":F1=0:VY=VY-EX:IF VY<=0 THEN VY=0:CALL IO.O:GOTO 6320 ELSE CALL IO.O:V1=VY
  618. 6220 IF LP<0 THEN LN=1:CALL IO.O:A=AA+STR$(LP)+" vit!":V1=V1-EX:IF V1<=0 THEN VY=0:GOTO 6320
  619. 6230 AL="":ON CVI(ITR$)+1 GOTO 6300,6280,6260
  620. 6240 L=0:W1=0:W4=0:FOR LP=1 TO 20:IF TX(LP)<0 THEN GET 8,ABS(TX(LP)):IF VAL(W0$)<0 AND VAL(RB$)>0 AND TZ(LP)THEN TZ(LP)=0:L=1:LN=1
  621. 6250 NEXT:IF L THEN AL="All your armor crumbles!":GOTO 6300
  622. 6260 L=0:W3=0:W5=0:FOR LP=1 TO 20:IF TX(LP)<0 THEN GET 8,ABS(TX(LP)):IF VAL(W0$)<0 AND VAL(RB$)<0 AND TZ(LP)THEN TZ(LP)=0:L=1:LN=1
  623. 6270 NEXT:IF L THEN AL="All your sheilds break in half!":GOTO 6300
  624. 6280 L=0:W2=0:W6=0:FOR LP=1 TO 20:IF TX(LP)<0 THEN GET 8,ABS(TX(LP)):IF VAL(W0$)>0 AND TZ(LP)THEN TZ(LP)=0:L=1:LN=1
  625. 6290 NEXT:IF L THEN AL="All your weapons break!"
  626. 6300 IF LN THEN CALL IO.O:IF AL<>"" THEN A=AL:CALL IO.O
  627. 6310 RETURN
  628. 6320 AI2=A:GOTO 6350
  629. 6330 IF INSTR("aeiou",LEFT$(AD(L),1))THEN A="an " ELSE A="a "
  630. 6340 AI2="You were just killed by "+A+AD(L)+"!"
  631. 6350 AI3="You have just died!":W1=0:W2=0:W3=0:W4=0:W5=0:W6=0:IF C2=7 THEN A=AI2:CALL IO.O:A=AI3:CALL IO.O:A="You were resurrected!":CALL IO.O:Z9=TS(9):NM=0:GOSUB 6560:GOTO 1530
  632. 6360 IF LF<2 OR F4(5)<2 THEN 6400
  633. 6370 GOSUB 6410:RM=TS(9):Z9=TS(9):NM=0:IF INT(RND*20+1)+F4(5)/2>25 THEN LF=LF-1 ELSE LF=INT(LF*.5+.5)
  634. 6380 F4(5)=F4(5)-1:F4(6)=F4(6)-1:RR=INT(RND*4+1):F4(RR)=F4(RR)-1:FOR LP=1 TO 6:IF F4(LP)<1 THEN F4(LP)=1
  635. 6390 NEXT:GG#=200:XP#=2^(LF+6):GOSUB 4550:GOSUB 6560:GOSUB 1800:PUT 3,UX:A=AI2:CALL IO.O:A=AI3:CALL IO.O:A="You were resurrected!":CALL IO.O:GOTO 1530
  636. 6400 GOSUB 6410:GOSUB 4540:GOSUB 6560:GOSUB 1800:PUT 3,UX:A=AI2:CALL IO.O:A=AI3:CALL IO.O:A="You were not resurrected..":CALL IO.O:GOTO 7530
  637. 6410 PI=0:WT=0:FOR LP=1 TO TR:FOR LN=1 TO 20:IF CVI(AF(LN)) THEN 6430
  638. 6420 LSET AF(LN)=MKI$(TX(LP)):LSET AG(LN)=MKI$(TZ(LP)):LN=20
  639. 6430 NEXT:NEXT
  640. 6440 GET 3,UX:FOR LP=1 TO TR:TX(LP)=0:TZ(LP)=0:LSET AC(LP)=MKI$(0):LSET AH(LP)=MKI$(0):NEXT:PUT 3,UX:TR=0:PUT 5,RM:F1=0:V1=0:MY=0:RETURN
  641. 6450 IF MI THEN AI=AA:GOSUB 6780:A="You cast a "+AI+" spell!":CALL IO.O:XX=MF:RETURN
  642. 6460 IF W2=0 THEN A="Punch!":XX=1:GOTO 6510 ELSE F3!=RND
  643. 6470 IF F3!>.96 THEN A="Deathly damage!":XX=4:GOTO 6510
  644. 6480 IF F3!>.91 THEN A="Triple damage!":XX=4:GOTO 6510
  645. 6490 IF F3!>.86 THEN A="Double damage!":XX=4:GOTO 6510
  646. 6500 XX=1:RETURN
  647. 6510 CALL IO.O:RETURN
  648. 6520 FOR UC=1 TO LEN(AL):UC1=ASC(MID$(AL,UC,1)):MID$(AL,UC,1)=CHR$(UC1+32*(UC1>96 AND UC1<123)):NEXT:RETURN
  649. 6530 FOR UC=1 TO LEN(AL):UC1=ASC(MID$(AL,UC,1)):MID$(AL,UC,1)=CHR$(UC1-32*(UC1>64 AND UC1<91)):NEXT:RETURN
  650. 6540 IF LM THEN KEY 1,"*EDIT"+CHR$(13):KEY 2,"*STA"+CHR$(13):KEY 3,"*DIS ":KEY 4,"*NM ":KEY 5,"*CALL":KEY 6,"*KILL ":KEY 7,"*TELE ":KEY 8,"*INV"+CHR$(13):KEY 9,"*DROP ":KEY 10,"*LINK"+CHR$(13):KEY ON:RETURN
  651. 6550 FOR LP=1 TO 10:KEY LP,"":NEXT
  652. 6560 IF LM OR TP THEN RETURN
  653. 6570 XC=CSRLIN:YC=POS(0)
  654. 6580 LOCATE 25,1:PRINT AO+STRING$(30-LEN(AO),32);:LOCATE 25,31:IF C2=7 THEN PRINT "DM     "; ELSE IF C2=2 THEN PRINT "MU     "; ELSE PRINT LEFT$(AM,7);
  655. 6590 AH="Fat"+STR$(F1)+" Vit"+STR$(V1)+" Mag"+STR$(MY):LOCATE 25,40:IF LEN(AH)<18 THEN AH=AH+" Str"+STR$(F4(1))+" Dex"+STR$(F4(4))+"("+MID$(STR$(CVI(A6)),2)+")":GOTO 6620
  656. 6600 IF LEN(AH)<24 THEN AH=AH+" lvl:"+MID$(STR$(LF),2)+" ("+MID$(STR$(CVI(A6)),2)+")":GOTO 6620
  657. 6610 IF LEN(AH)<27 THEN AH=AH+" lvl:"+STR$(LF)
  658. 6620 PRINT AH+STRING$(35-LEN(AH),32);:LOCATE 25,75:PRINT MID$(STR$(RM),2)+STRING$(ABS(LEN(STR$(RM))-5),32);:LOCATE XC,YC,1:RETURN
  659. 6640 IF LM THEN RETURN
  660. 6650 TP=NOT TP:XC=CSRLIN:YC=POS(0):LOCATE 25,1:PRINT STRING$(79,32);:IF TP THEN 6580
  661. 6660 FOR LC=1 TO 10:LOCATE 25,LC*8-7:PRINT RIGHT$(STR$(LC),1);:NEXT:COLOR 0,7:LOCATE 25,2:PRINT "*EDIT"+CHR$(27);:LOCATE 25,10:PRINT "*STA"+CHR$(27);:LOCATE 25,18:PRINT "*DIS ";:LOCATE 25,26:PRINT "*NM ";:LOCATE 25,34:PRINT "*CALL";
  662. 6670 LOCATE 25,42:PRINT "*KILL ";:LOCATE 25,50:PRINT "*TELE ";:LOCATE 25,58:PRINT "*INV"+CHR$(27);:LOCATE 25,66:PRINT "*DROP ";:LOCATE 25,76:PRINT "DEATH";:COLOR 7,0:LOCATE XC,YC,1:RETURN
  663. 6720 CLOSE 1:OPEN "R",1,BD,1:IF LOF(1)=0 THEN RETURN
  664. 6730 CLOSE 1:OPEN "I",1,BD:IN=1:WHILE EOF(1)=0:LINE INPUT#1,A:CALL IO.O:IF TF THEN IN=0:RETURN
  665. 6740 WEND:IN=0:RETURN
  666. 6750 GET 3,UX
  667. 6760 AI=AN:GOSUB 6780:AO=AI:AI=PS$:GOSUB 6780:AF=AI:AM=A2:C2=VAL(A1):FOR LN=1 TO 6:F4(LN)=CVI(A2(LN)):NEXT:RM=CVI(RO$):LF=CVI(B4):XP#=CVD(A9):GG#=CVD(BT):F1=CVI(B9):F2=CVI(BC):V1=CVI(V4$):V2=CVI(V5$):MY=CVI(BR):M2=CVI(BP):PI=VAL(BZ)
  668. 6770 LR=VAL(LR$):I4=VAL(BH):C8=VAL(B1):Z1#=CVD(AD):FOR LP=1 TO 20:TZ(LP)=CVI(AC(LP)):TZ(LP)=CVI(AH(LP)):NEXT:RETURN
  669. 6780 WHILE RIGHT$(AI,1)=" ":AI=LEFT$(AI,LEN(AI)-1):WEND:RETURN
  670. 6790 SP=INSTR(V2$," "):IF SP THEN N$=LEFT$(V2$,SP-1):V2$=MID$(V2$,SP+1):GOSUB 6810
  671. 6800 GOSUB 7050:RETURN
  672. 6810 S6=0:LP=INSTR(N$,"#"):IF LP THEN S6=VAL(MID$(N$,LP+1)):N$=LEFT$(N$,LP-1)
  673. 6820 RETURN
  674. 6830 DI=0:A="Create a room there?":CALL IO.I:IF YE=0 THEN RETURN
  675. 6840 FG=49:A="Short Description?":CALL IO.I:GOSUB 6970:IF NX THEN RETURN
  676. 6850 S5=LOF(5)/470+1:GET 5,S5:LSET AP=AL:A="Long Description":CALL IO.O:FOR LP=1 TO 4:A="?":CALL IO.I:IF NX THEN 6870
  677. 6860 GOSUB 6970:LSET AB(LP)=AL:NEXT
  678. 6870 IF D7=1 THEN D8=3
  679. 6880 IF D7=2 THEN D8=4
  680. 6890 IF D7=3 THEN D8=1
  681. 6900 IF D7=4 THEN D8=2
  682. 6910 IF D7=5 THEN D8=0
  683. 6920 IF D7=6 THEN D8=7
  684. 6930 IF D7=7 THEN D8=6
  685. 6940 FOR LP=LP TO 4:LSET AB(LP)=STRING$(80,32):NEXT:S4=RM:LSET AE(D8)=MKI$(S4):LSET A6=MKI$(0):LSET MN$=MKI$(0)
  686. 6950 DI=1:RM=S5:PUT 5,S5:LSET STP$=MKI$(0):LSET MTR$=MKI$(0):LSET HTR$=MKI$(0):LSET ETR$=MKI$(0):LSET TTR$=MKI$(0):LSET ITR$=MKI$(0):LSET KTR$=MKI$(0):LSET PTR$=MKI$(0):LSET FTR$=MKI$(0):PUT 9,LOF(9)/18+1:IF S4<1 OR S4>LOF(5)/470 THEN RETURN
  687. 6960 GET 5,S4:LSET AE(D7)=MKI$(S5):PUT 5,S4:RETURN
  688. 6970 IF LEFT$(AL,1)=" "THEN AL=MID$(AL,2):GOTO 6970
  689. 6980 RETURN
  690. 6990 IF RIGHT$(AL,1)="."THEN AL=LEFT$(AL,LEN(AL)-1):GOTO 6990
  691. 7000 RETURN
  692. 7010 TE=0:CM=0:TN=0:IF N$=""THEN RETURN
  693. 7020 FOR L=1 TO 20:IF CVI(AF(L))>0 THEN GET 6,CVI(AF(L)):AI=S9$ ELSE IF CVI(AF(L))<0 THEN GET 8,ABS(CVI(AF(L))):AI=SH$ ELSE 7040
  694. 7030 GOSUB 6780:AL=AI:GOSUB 6520:IF LEFT$(AL,LEN(N$))=N$THEN TE=CVI(AF(L)):CM=CM+1:IF S6=0 OR CM=S6 THEN TN=CVI(AG(L)):RETURN
  695. 7040 NEXT:TE=0:RETURN
  696. 7050 TE=0:CM=0:TN=0:IF N$=""THEN RETURN
  697. 7060 FOR L=1 TO TR:IF TX(L)>0 THEN GET 6,TX(L):AI=S9$ ELSE IF TX(L)<0 THEN GET 8,ABS(TX(L)):AI=SH$ ELSE 7080
  698. 7070 GOSUB 6780:AL=AI:GOSUB 6520:IF LEFT$(AL,LEN(N$))=N$THEN TE=TX(L):CM=CM+1:IF S6=0 OR CM=S6 THEN TN=TZ(L):RETURN
  699. 7080 NEXT:TE=0:RETURN
  700. 7090 MN=0:CM=0:L=0:IF N$=""THEN RETURN
  701. 7100 FOR L=1 TO NM:LN=0:LP=0
  702. 7110 LN=INSTR(LN+1,AD(L)," "):IF LN THEN LP=LN:GOTO 7110
  703. 7120 AL=MID$(AD(L),LP+1):GOSUB 6520:IF LEFT$(AL,LEN(N$))=N$ THEN MN=L:CM=CM+1:IF S6=0 OR CM=S6 THEN RETURN
  704. 7130 NEXT:L=0:MN=0:RETURN
  705. 7140 NX=0:FOR SX=1 TO LOF(3)/256:GET 3,SX:IF AL+STRING$(30-LEN(AL),32)<>AN THEN 7170
  706. 7150 IF UX=SX OR VAL(LCK$) THEN NX=1
  707. 7160 RETURN
  708. 7170 NEXT:NX=1:RETURN
  709. 7180 AL=BO:CLOSE 1:OPEN "R",1,PA1$+AL+".CTN",34:FIELD 1,2 AS BA,2 AS BB,30 AS RH$:RETURN
  710. 7190 IF LEFT$(DATE$,2)<>LEFT$(AC,2)OR AC=DATE$ THEN RETURN
  711. 7200 FOR LP=1 TO VAL(MID$(DATE$,4,2))-VAL(MID$(AC,4,2)):Z1#=Z1#+INT(Z1#*.06):NEXT:RETURN
  712. 7210 IF RM<>TS(10)THEN A="Find the Pawn Shop..":GOTO 520
  713. 7220 CALL IO.O:A="The Fence asks: "+CHR$(34)+"Now what do ya want?"+CHR$(34):FG=1:CALL IO.I:GOSUB 1800:PUT 3,UX:GOSUB 6520
  714. 7230 L=INSTR("DTWB?Q",AL):IF L THEN ON L GOTO 7270,7310,7360,7260,7250,630
  715. 7240 A="Type ? for help":GOTO 7220
  716. 7250 BD=PA2$+"BANKHELP.HLP":GOSUB 6720:GOTO 7220
  717. 7260 A="He fumbles with his ledgers and says:":CALL IO.O:A=CHR$(34)+"You have"+STR$(GG#)+" Gold and"+STR$(Z1#)+" in the bank"+CHR$(34):GOTO 7220
  718. 7270 IF GG#<=0 THEN A=CHR$(34)+"You have no Gold to deposit!"+CHR$(34):GOTO 7220
  719. 7280 A=CHR$(34)+"How much(0-"+MID$(STR$(GG#),2)+")?"+CHR$(34):CALL IO.I:NV=VAL(AL):G1#=NV:IF G1#<=0 THEN 7220
  720. 7290 IF G1#>GG#THEN A=CHR$(34)+"You don't have that much Gold!"+CHR$(34):GOTO 7220
  721. 7300 Z1#=Z1#+G1#:GG#=GG#-G1#:A="You hand him the Gold..":GOTO 7220
  722. 7310 IF Z1#<=0 THEN A=CHR$(34)+"You have nothing in your account to transfer!"+CHR$(34):GOTO 7220
  723. 7320 A=CHR$(34)+"How much(0-"+MID$(STR$(Z1#),2)+")?"+CHR$(34):CALL IO.I:NV=VAL(AL):G1#=NV:IF G1#<=0 THEN 7220
  724. 7330 IF G1#>Z1# THEN A=CHR$(34)+"You don't have that much Gold!":GOTO 7220
  725. 7340 A=CHR$(34)+"Transfer to what person?":CALL IO.I:GOSUB 6520:GOSUB 7140:IF NX THEN A=CHR$(34)+"There's none in my ledgers with that name!":GOTO 7220
  726. 7350 Z1#=Z1#-G1#:G2#=CVD(AD):LSET AD=MKD$(G1#+G2#):PUT 3,SX:A="The Fence works with his ledgers for a while..":CALL IO.O:A=CHR$(34)+MID$(STR$(G1#),2)+" transferred to his account.."+CHR$(34):GOTO 7220
  727. 7360 IF Z1#<=0 THEN A=CHR$(34)+"You have nothing to withdraw!"+CHR$(34):GOTO 7220
  728. 7370 A=CHR$(34)+"How much(0-"+MID$(STR$(Z1#),2)+")?"+CHR$(34):CALL IO.I:NV=VAL(AL):G1#=NV:IF G1#<=0 THEN 7220
  729. 7380 IF G1#>=GG# THEN A=CHR$(34)+"You don't have that much Gold!"+CHR$(34):GOTO 7220
  730. 7390 Z1#=Z1#-G1#:GG#=GG#+G1#:A="The fence hands you the Gold..":GOTO 7220
  731. 7400 CLOSE 4,5,6,7,8,9:OPEN "R",5,PA1$+"ROOMS.DAT",470:OPEN "R",6,PA1$+"OBJECTS.DAT",256:OPEN "R",7,PA1$+"MONSTERS.DAT",128
  732. 7410 OPEN "R",8,PA1$+"TREASURE.DAT",128:OPEN "R",4,PA1$+"SPELLS.DAT",128:OPEN "R",9,PA1$+"EVENT.DAT",18
  733. 7420 FIELD 4,30 AS SQ$,80 AS B2,2 AS PQ$,2 AS A4,5 AS TG$,9 AS B7:FIELD 5,80 AS AB(1),80 AS AB(2),80 AS AB(3),80 AS AB(4),2 AS A6,2 AS B7,2 AS AE(1),2 AS AE(2),2 AS AE(3),2 AS AE(4),2 AS AE(5),2 AS AE(6),2 AS AE(7),50 AS AP,2 AS MN$
  734. 7430 FOR LP=1 TO 20:FIELD 5,(LP-1)*2+390 AS B7,2 AS AF(LP):NEXT:FOR LP=1 TO 20:FIELD 5,(LP+19)*2+390 AS B7,2 AS AG(LP):NEXT
  735. 7440 FIELD 6,30 AS AJ,30 AS S9$,5 AS DZ$,5 AS AU,1 AS AX,3 AS TV$,5 AS AY,5 AS LO$,1 AS BL,1 AS BI,1 AS AZ,5 AS A7,1 AS ZD$,35 AS B7,128 AS BV
  736. 7450 FIELD 7,30 AS BS,30 AS PL$,2 AS AJ(1),2 AS AJ(2),2 AS AJ(3),2 AS AJ(4),2 AS AJ(5),2 AS A8,2 AS BF,2 AS AB,2 AS BG,2 AS PP$,2 AS B6,46 AS B7
  737. 7460 FIELD 8,30 AS A3,5 AS W6$,5 AS V3$,3 AS BN,5 AS B7,4 AS W0$,2 AS B7,1 AS QM$,30 AS SH$,5 AS KE$,2 AS S7$,5 AS WA$,2 AS BX,8 AS BO,5 AS F5$,2 AS RB$,2 AS ZZ$,1 AS ZW$,1 AS ZQ$,10 AS B7
  738. 7470 FIELD 9,2 AS STP$,2 AS MTR$,2 AS HTR$,2 AS ETR$,2 AS TTR$,2 AS ITR$,2 AS KTR$,2 AS PTR$,2 AS FTR$
  739. 7480 FOR LP=1 TO 20:FIELD 5,(LP-1)*2 AS B7,2 AS AC(LP):NEXT:FOR LP=1 TO 20:FIELD 5,(LP+19) AS B7,2 AS AH(LP):NEXT
  740. 7490 FIELD 3,80 AS B7,30 AS AN,20 AS PS$,20 AS A2,1 AS A1,2 AS A2(1),2 AS A2(2),2 AS A2(3),2 AS A2(4),2 AS A2(5),2 AS A2(6),10 AS B7,2 AS RO$,2 AS B4
  741. 7500 FIELD 3,177 AS B7,8 AS A9,8 AS BT,1 AS B1,2 AS B9,2 AS BC, 2 AS V4$,2 AS V5$,2 AS BR,2 AS BP,2 AS BZ,2 AS B7,2 AS BH,2 AS B7,2 AS LCK$,2 AS B7,8 AS AD,8 AS AE,10 AS AC:RETURN
  742. 7510 A="Are you sure?":CALL IO.I:IF YE=0 THEN 630
  743. 7520 IF SG THEN GOSUB 1800:PUT 3,UX
  744. 7530 IF RM<=0 OR RM>LOF(5)/470 THEN 7560
  745. 7540 GET 5,RM:FOR LP=1 TO 20:IF CVI(AF(LP))<0 THEN GET 8,ABS(CVI(AF(LP))):IF VAL(BX)=0 THEN LSET AF(LP)=MKI$(0):LSET AG(LP)=MKI$(0)
  746. 7550 NEXT:PUT 5,RM
  747. 7560 KEY OFF:FOR LP=1 TO 10:KEY LP,"":NEXT
  748. 7570 EXIT SUB
  749. 7580 END SUB
  750. 7590 PRINT "Error"ERR" in module DNDBBS1 number"ERL
  751. 7600 RESUME NEXT
  752. THEN A="Improper spell chant!":GOTO 52